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

MariaDB JSON_UNQUOTE() expliqué

Dans MariaDB, JSON_UNQUOTE() est une fonction intégrée qui supprime les guillemets d'une valeur JSON. En d'autres termes, il "unquote" une valeur JSON.

Syntaxe

La syntaxe ressemble à ceci :

JSON_UNQUOTE(val)

Exemple

Voici un exemple pour illustrer.

SELECT JSON_UNQUOTE('"Eggs"');

Résultat :

+------------------------+
| JSON_UNQUOTE('"Eggs"') |
+------------------------+
| Eggs                   |
+------------------------+

Caractères d'échappement

Si la valeur contient un caractère antislash (\ ), il est généralement ignoré. Cependant, certaines séquences impliquant la barre oblique inverse peuvent avoir une signification particulière et peuvent affecter le résultat de JSON_UNQUOTE() .

Cela dépendra si le mode SQL est défini sur NO_BACKSLASH_ESCAPES . Lorsque le mode SQL est défini sur NO_BACKSLASH_ESCAPES , cela désactive l'utilisation du caractère barre oblique inverse comme caractère d'échappement dans les chaînes, ce qui le rend équivalent à un caractère ordinaire.

Sinon, les séquences suivantes resteront vraies :

Séquence d'échappement Personnage
\" Avis double (" )
\b Barre oblique inverse
\f Saut de page
\n Nouvelle ligne (saut de ligne)
\r Retour chariot
\t Onglet
\\ Barre oblique inverse (\ )
\uXXXX octets UTF-8 pour la valeur Unicode XXXX

Exemple :

SELECT JSON_UNQUOTE('Feeling\tGood');

Résultat :

+-------------------------------+
| JSON_UNQUOTE('Feeling\tGood') |
+-------------------------------+
| Feeling	Good                  |
+-------------------------------+

Ici, j'ai utilisé le \t séquence pour ajouter un caractère de tabulation dans la chaîne.

Si je règle le mode SQL sur NO_BACKSLASH_ESCAPES , la séquence n'a pas de signification particulière et la séquence littérale est incluse dans la sortie sans interprétation :

SET @@sql_mode = 'NO_BACKSLASH_ESCAPES';

SELECT JSON_UNQUOTE('Feeling\tGood');

Résultat :

+-------------------------------+
| JSON_UNQUOTE('Feeling\tGood') |
+-------------------------------+
| Feeling\tGood                 |
+-------------------------------+

Arguments nuls

Si l'argument est NULL , le résultat est NULL :

SELECT JSON_UNQUOTE(null);

Résultat :

+--------------------+
| JSON_UNQUOTE(null) |
+--------------------+
| NULL               |
+--------------------+

Nombre de paramètres incorrect

Appel de JSON_UNQUOTE() sans argument génère une erreur :

SELECT JSON_UNQUOTE();

Résultat :

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_UNQUOTE'

Il en va de même lorsque vous fournissez trop d'arguments :

SELECT JSON_UNQUOTE('a', 'b');

Résultat :

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_UNQUOTE'