sql >> Databasteknik >  >> RDS >> MariaDB

MariaDB JSON_UNQUOTE() Förklarad

I MariaDB, JSON_UNQUOTE() är en inbyggd funktion som tar bort citattecken från ett JSON-värde. Med andra ord, det "avciterar" ett JSON-värde.

Syntax

Syntaxen ser ut så här:

JSON_UNQUOTE(val)

Exempel

Här är ett exempel att visa.

SELECT JSON_UNQUOTE('"Eggs"');

Resultat:

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

Escape-tecken

Om värdet innehåller ett omvänt snedstreck (\ ), ignoreras det vanligtvis. Vissa sekvenser som involverar snedstrecket kan dock ha speciell betydelse och kan påverka resultatet av JSON_UNQUOTE() .

Detta beror på om SQL-läget är inställt på NO_BACKSLASH_ESCAPES . När SQL-läge är inställt på NO_BACKSLASH_ESCAPES , detta inaktiverar användning av omvänt snedstreck som ett escape-tecken inom strängar, vilket gör det likvärdigt med ett vanligt tecken.

Annars kommer följande sekvenser att gälla:

Escape-sekvens Tecken
\" Dubbel citattecken (" )
\b Omvänt snedstreck
\f Formfeed
\n Ny linje (radinmatning)
\r Carriage return
\t Flik
\\ Omvänt snedstreck (\ )
\uXXXX UTF-8 byte för Unicode-värdet XXXX

Exempel:

SELECT JSON_UNQUOTE('Feeling\tGood');

Resultat:

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

Här använde jag \t sekvens för att lägga till ett tabbtecken i strängen.

Om jag ställer in SQL-läge till NO_BACKSLASH_ESCAPES , sekvensen har ingen speciell betydelse, och den bokstavliga sekvensen ingår i utdata utan tolkning:

SET @@sql_mode = 'NO_BACKSLASH_ESCAPES';

SELECT JSON_UNQUOTE('Feeling\tGood');

Resultat:

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

Nollargument

Om argumentet är NULL , resultatet är NULL :

SELECT JSON_UNQUOTE(null);

Resultat:

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

Felaktig parameterräkning

Anropar JSON_UNQUOTE() utan argument resulterar i ett fel:

SELECT JSON_UNQUOTE();

Resultat:

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

Det är samma sak när du ger för många argument:

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

Resultat:

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

  1. Bör MySQL ha sin tidszon inställd på UTC?

  2. Grundläggande om tabelluttryck, del 6 – Rekursiva CTE:er

  3. Få positionen för en karaktär i en sträng i SQLite med Instr()

  4. Prestanda överraskningar och antaganden:GROUP BY vs. DISTINCT