I MariaDB, JSON_UNQUOTE()
er en indbygget funktion, der fjerner citater fra en JSON-værdi. Med andre ord "fjerner" en JSON-værdi.
Syntaks
Syntaksen ser sådan ud:
JSON_UNQUOTE(val)
Eksempel
Her er et eksempel til at demonstrere.
SELECT JSON_UNQUOTE('"Eggs"');
Resultat:
+------------------------+ | JSON_UNQUOTE('"Eggs"') | +------------------------+ | Eggs | +------------------------+
Escape-tegn
Hvis værdien indeholder et omvendt skråstreg (\
), ignoreres det normalt. Visse sekvenser, der involverer omvendt skråstreg, kan dog have særlig betydning og kan påvirke resultatet af JSON_UNQUOTE()
.
Dette afhænger af, om SQL-tilstand er indstillet til NO_BACKSLASH_ESCAPES
. Når SQL-tilstand er indstillet til NO_BACKSLASH_ESCAPES
, dette deaktiverer brugen af omvendt skråstreg som et escape-tegn i strenge, hvilket gør det ækvivalent med et almindeligt tegn.
Ellers gælder følgende sekvenser:
Escape-sekvens | Karakter |
---|---|
\" | Dobbelt anførselstegn (" ) |
\b | Omvendt skråstreg |
\f | Formfeed |
\n | Ny linje (linefeed) |
\r | Vogneretur |
\t | Fane |
\\ | Omvendt skråstreg (\ ) |
\uXXXX | UTF-8 bytes for Unicode-værdi XXXX |
Eksempel:
SELECT JSON_UNQUOTE('Feeling\tGood');
Resultat:
+-------------------------------+ | JSON_UNQUOTE('Feeling\tGood') | +-------------------------------+ | Feeling Good | +-------------------------------+
Her brugte jeg \t
sekvens for at tilføje et tabulatortegn i strengen.
Hvis jeg indstiller SQL-tilstand til NO_BACKSLASH_ESCAPES
, sekvensen har ingen speciel betydning, og den bogstavelige sekvens er inkluderet i outputtet uden fortolkning:
SET @@sql_mode = 'NO_BACKSLASH_ESCAPES';
SELECT JSON_UNQUOTE('Feeling\tGood');
Resultat:
+-------------------------------+ | JSON_UNQUOTE('Feeling\tGood') | +-------------------------------+ | Feeling\tGood | +-------------------------------+
Nul-argumenter
Hvis argumentet er NULL
, resultatet er NULL
:
SELECT JSON_UNQUOTE(null);
Resultat:
+--------------------+ | JSON_UNQUOTE(null) | +--------------------+ | NULL | +--------------------+
Forkert parameterantal
Kalder JSON_UNQUOTE()
uden et argument resulterer i en fejl:
SELECT JSON_UNQUOTE();
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_UNQUOTE'
Det er det samme, når du giver for mange argumenter:
SELECT JSON_UNQUOTE('a', 'b');
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_UNQUOTE'