Mysql
 sql >> Base de données >  >> RDS >> Mysql

Pourquoi ai-je besoin d'un double échappement (utilisez 4 \) pour trouver une barre oblique inverse ( \ ) en SQL pur ?

Vous échappez d'abord pour la syntaxe de la chaîne, puis pour LIKE syntaxe.

Dans LIKE caractères % et _ ont une signification particulière, donc si vous voulez rechercher littéral % , vous devez utiliser \% , et si vous souhaitez rechercher un \% littéral vous devez échapper la barre oblique inverse comme dans \\% .

En syntaxe de chaîne " a évidemment une signification particulière, donc si vous voulez inclure un guillemet dans la chaîne, vous devez l'échapper sous la forme \" , et pour inclure le littéral \" dans la chaîne, vous devez échapper la barre oblique inverse comme dans \\" .

Donc, dans les deux syntaxes, vous devez échapper \ .

Si vous ne voulez pas utiliser \ pour échapper au modèle LIKE, vous pouvez utiliser le mot-clé ESCAPE. Par exemple :

...  where test LIKE "a\\b%" ESCAPE '|';

De cette façon, vous devrez écrire |% , |_ ou || pour échapper à ces caractères spéciaux.