Caractères d'échappement dans les clauses MySQL WHERE et LIKE
Dans MySQL, lors de la recherche de caractères spéciaux comme la barre oblique inverse () dans une clause WHERE, aucune évasion supplémentaire n’est requise. Cependant, pour les clauses LIKE, une double barre oblique inverse () est nécessaire. Cela est dû à l'utilisation par défaut par MySQL de comme caractère d'échappement dans les instructions LIKE.
Comprendre POURQUOI et COMMENT les caractères d'échappement fonctionnent dans WHERE et LIKE
Dans les clauses WHERE, MySQL compare la valeur spécifiée directement à la valeur de la colonne sans autre traitement. Par conséquent, une seule barre oblique inverse () suffit pour faire correspondre le caractère barre oblique inverse dans la colonne.
Dans les clauses LIKE, MySQL supprime d'abord toutes les barres obliques inverses du modèle spécifié. Ensuite, pendant le processus de correspondance de modèle, il supprime les barres obliques inverses restantes. Ce processus de double suppression nécessite une double barre oblique inverse () pour échapper au caractère barre oblique inverse et lui permettre d'être mis en correspondance dans la clause LIKE.
Exemple
La requête SQL fournie démontre la différence :
(SELECT * FROM `titles` WHERE title = 'test\') UNION ALL (SELECT * FROM `titles` WHERE title LIKE 'test\\')
Sortie :
| ID | TITLE | -------------- | 1 | test\ | | 1 | test\ |
La double barre oblique inverse () est requis dans la clause LIKE pour correspondre à la barre oblique inverse dans la valeur de la colonne.
Modification du caractère d'échappement
Si vous le souhaitez, vous pouvez modifier le caractère d'échappement utilisé dans LIKE en précisant le caractère souhaité après le mot-clé ESCAPE :
SELECT * FROM `titles` WHERE title LIKE 'test\' ESCAPE '|'
Dans ce cas, le tube (|) est utilisé comme caractère d'échappement, permettant un une seule barre oblique inverse () à faire correspondre dans la clause LIKE.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!