Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Por que preciso de escape duplo (use 4 \) para encontrar uma barra invertida ( \ ) em SQL puro?


Você escapa primeiro para a sintaxe da string, depois para LIKE sintaxe.

Em LIKE caracteres % e _ tem um significado especial, então se você quiser procurar literal % , você precisa usar \% , e se você quiser pesquisar literal \% você precisa escapar da barra invertida como em \\% .

Na sintaxe de string " obviamente tem um significado especial, então se você quiser incluir aspas na string, você precisa escapar como \" , e incluir o literal \" na string você tem que escapar da barra invertida como em \\" .

Portanto, em ambas as sintaxes, você precisa escapar \ .

Se você não quiser usar \ para escapar do padrão LIKE , você pode usar a palavra-chave ESCAPE. Por exemplo:
...  where test LIKE "a\\b%" ESCAPE '|';

Dessa forma, você precisará escrever |% , |_ ou || para escapar desses caracteres especiais.