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'