MariaDB
 sql >> Database >  >> RDS >> MariaDB

Spiegazione di MariaDB JSON_UNQUOTE()

In MariaDB, JSON_UNQUOTE() è una funzione integrata che rimuove le virgolette da un valore JSON. In altre parole, "annulla" un valore JSON.

Sintassi

La sintassi è questa:

JSON_UNQUOTE(val)

Esempio

Ecco un esempio da dimostrare.

SELECT JSON_UNQUOTE('"Eggs"');

Risultato:

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

Caratteri di escape

Se il valore contiene un carattere barra rovesciata (\ ), di solito viene ignorato. Tuttavia, alcune sequenze che coinvolgono la barra rovesciata possono avere un significato speciale e possono influenzare il risultato di JSON_UNQUOTE() .

Ciò dipenderà dal fatto che la modalità SQL sia impostata o meno su NO_BACKSLASH_ESCAPES . Quando la modalità SQL è impostata su NO_BACKSLASH_ESCAPES , questo disabilita l'utilizzo del carattere barra rovesciata come carattere di escape all'interno delle stringhe, rendendolo equivalente a un carattere normale.

In caso contrario, le seguenti sequenze rimarranno vere:

Sequenza di escape Personaggio
\" Doppia virgoletta (" )
\b Barra rovesciata
\f Alimentazione modulo
\n Nuova riga (avanzamento riga)
\r Ritorno di trasporto
\t Scheda
\\ Barra rovesciata (\ )
\uXXXX Byte UTF-8 per valore Unicode XXXX

Esempio:

SELECT JSON_UNQUOTE('Feeling\tGood');

Risultato:

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

Qui, ho usato il \t sequenza per aggiungere un carattere di tabulazione all'interno della stringa.

Se imposto la modalità SQL su NO_BACKSLASH_ESCAPES , la sequenza non ha un significato speciale e la sequenza letterale è inclusa nell'output senza interpretazione:

SET @@sql_mode = 'NO_BACKSLASH_ESCAPES';

SELECT JSON_UNQUOTE('Feeling\tGood');

Risultato:

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

Argomenti nulli

Se l'argomento è NULL , il risultato è NULL :

SELECT JSON_UNQUOTE(null);

Risultato:

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

Conteggio parametri errato

Chiamando JSON_UNQUOTE() senza un argomento genera un errore:

SELECT JSON_UNQUOTE();

Risultato:

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

È lo stesso quando fornisci troppi argomenti:

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

Risultato:

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