Maison > base de données > tutoriel mysql > le corps du texte

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

Barbara Streisand
Libérer: 2024-11-26 01:29:11
original
441 Les gens l'ont consulté

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

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

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

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!

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