Maison > base de données > tutoriel mysql > Pourquoi l'échappement des barres obliques inverses diffère-t-il entre les clauses WHERE et LIKE de MySQL ?

Pourquoi l'échappement des barres obliques inverses diffère-t-il entre les clauses WHERE et LIKE de MySQL ?

Linda Hamilton
Libérer: 2025-01-06 21:55:45
original
974 Les gens l'ont consulté

Why Does Escaping Backslashes Differ Between MySQL's WHERE and LIKE Clauses?

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\\')
Copier après la connexion

Sortie :

| ID | TITLE |
--------------
| 1 | test\ |
| 1 | test\ |
Copier après la connexion

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 '|'
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal