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

Comment conserver la barre oblique inverse lors de l'échappement des guillemets dans MySQL - QUOTE ()

L'utilisation d'une barre oblique inverse pour échapper aux guillemets simples est une technique couramment utilisée pour s'assurer que les guillemets simples n'interfèrent pas avec la gestion de la chaîne complète par MySQL.

Les guillemets simples sont utilisés pour entourer une chaîne, donc un guillemet simple dans la chaîne elle-même pourrait causer des ravages s'il n'est pas correctement échappé. Le simple fait d'insérer une barre oblique inverse immédiatement avant le guillemet garantit que MySQL ne terminera pas la chaîne prématurément.

Cependant, il peut arriver que vous souhaitiez conserver la barre oblique inverse. Par exemple, vous pouvez avoir l'intention d'utiliser la chaîne dans une instruction SQL et, par conséquent, vous souhaitez qu'elle soit correctement échappée en premier.

C'est là que le QUOTE() la fonction entre en jeu.

Le MySQL QUOTE() La fonction cite une chaîne pour produire un résultat qui peut être utilisé comme valeur de données correctement échappée dans une instruction SQL. La chaîne est renvoyée entre guillemets simples et avec chaque instance de barre oblique inverse (\ ), apostrophe (' ), ASCII NUL , et Control+Z précédés d'une barre oblique inverse.

Syntaxe de la fonction QUOTE()

Voici comment fonctionne la syntaxe :

QUOTE(str)

str est la chaîne (déjà) échappée.

Exemple

Un exemple explique probablement cela mieux que mon explication :

SELECT QUOTE('Don\'t!') AS Result;

Résultat :

+-----------+
| Result    |
+-----------+
| 'Don\'t!' |
+-----------+

À première vue, vous pourriez penser "mais rien ne s'est passé - le résultat est exactement le même que l'argument". Cependant, c'est exactement pourquoi cette fonction est utile. Si nous n'avions pas utilisé le QUOTE() fonction, voici ce qui se serait passé :

SELECT 'Don\'t!' AS Result;

Résultat :

+--------+
| Result |
+--------+
| Don't! |
+--------+

Donc en utilisant le QUOTE() fonction, nous conservons les guillemets simples et le backslash.

Bien sûr, dans de nombreux cas, c'est exactement ce que vous voulez. Dans de nombreux cas, la barre oblique inverse et les guillemets environnants devraient être retiré. Mais il peut y avoir des cas où vous voulez exactement ce que le QUOTE() fonction fait pour vous.

L'alternative

Le QUOTE() la fonction vous évite d'avoir à faire quelque chose comme ceci :

SELECT '''Don\\\'t!''' AS Result;

Résultat :

+-----------+
| Result    |
+-----------+
| 'Don\'t!' |
+-----------+

Cela nous évite donc d'avoir à utiliser trois guillemets simples pour chaque guillemet simple et trois barres obliques inverses pour chaque barre oblique inverse.