Maison >base de données >tutoriel mysql >Comment échapper aux signes de pourcentage littéral dans le mode NO_BACKSLASH_ESCAPES de MySQL ?

Comment échapper aux signes de pourcentage littéral dans le mode NO_BACKSLASH_ESCAPES de MySQL ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-26 01:29:11515parcourir

How to Escape Literal Percentage Signs in MySQL's NO_BACKSLASH_ESCAPES Mode?

Échappement des signes de pourcentage littéral dans le mode MySQL NO_BACKSLASH_ESCAPES

Dans MySQL, lorsque le mode NO_BACKSLASH_ESCAPES est activé, la barre oblique inverse () standard d'échappement est désactivé. Cela peut poser un défi lorsque vous tentez d'échapper des caractères de pourcentage littéral (%) ou de trait de soulignement (_) dans les requêtes LIKE.

La méthode conventionnelle d'échappement d'un signe de pourcentage, en utilisant %, devient inefficace en mode NO_BACKSLASH_ESCAPES. Comme illustré dans la requête fournie :

SELECT * FROM mytable
WHERE mycol LIKE '5\% off'

...cette requête ne parviendra pas à renvoyer le résultat souhaité lorsque le mode NO_BACKSLASH_ESCAPES est activé.

Solution avec caractère d'échappement

Pour échapper à un signe de pourcentage littéral en mode NO_BACKSLASH_ESCAPES, vous devez utiliser un caractère d'échappement. Le caractère d'échappement précise que le caractère suivant doit être interprété littéralement, et non comme un caractère spécial.

Dans MySQL, le caractère d'échappement peut être n'importe quel caractère non alphanumérique. Par exemple, utilisons le caractère barre oblique inverse () comme caractère d'échappement :

select * from mytable
where mycol like '5\% off' escape '\';

Dans cette requête, la barre oblique inverse précédant le signe de pourcentage indique que le signe de pourcentage doit être traité comme un caractère littéral et non comme un caractère générique. .

Solution alternative avec un caractère d'échappement différent

Pour assurer la compatibilité avec les deux En mode NO_BACKSLASH_ESCAPES et en mode standard, vous pouvez utiliser un caractère différent comme caractère d'échappement. Cela permet à la requête de fonctionner quel que soit le paramètre de mode.

Par exemple, utilisons le caractère barre verticale (|) comme caractère d'échappement :

select * from mytable
where mycol like '5|% off' escape '|';

Dans ce cas, le caractère barre verticale précédant le signe de pourcentage sert de caractère d'échappement, permettant à la requête de s'exécuter avec succès en mode standard et en mode NO_BACKSLASH_ESCAPES.

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!

Déclaration:
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