In MariaDB, JSON_UNQUOTE()
is een ingebouwde functie die aanhalingstekens uit een JSON-waarde verwijdert. Met andere woorden, het "unquote" een JSON-waarde.
Syntaxis
De syntaxis gaat als volgt:
JSON_UNQUOTE(val)
Voorbeeld
Hier is een voorbeeld om te demonstreren.
SELECT JSON_UNQUOTE('"Eggs"');
Resultaat:
+------------------------+ | JSON_UNQUOTE('"Eggs"') | +------------------------+ | Eggs | +------------------------+
Escape-tekens
Als de waarde een backslash-teken bevat (\
), wordt het meestal genegeerd. Bepaalde reeksen waarbij de backslash betrokken is, kunnen echter een speciale betekenis hebben en kunnen de uitkomst van JSON_UNQUOTE()
beïnvloeden. .
Dit hangt af van het al dan niet instellen van de SQL-modus op NO_BACKSLASH_ESCAPES
. Wanneer de SQL-modus is ingesteld op NO_BACKSLASH_ESCAPES
, hierdoor wordt het gebruik van het backslash-teken als escape-teken binnen strings uitgeschakeld, waardoor het equivalent wordt aan een gewoon teken.
Anders gelden de volgende reeksen:
Escape-reeks | Karakter |
---|---|
\" | Dubbel aanhalingsteken (" ) |
\b | Backslash |
\f | Formfeed |
\n | Nieuwe regel (linefeed) |
\r | Koetsretour |
\t | Tabblad |
\\ | Backslash (\ ) |
\uXXXX | UTF-8 bytes voor Unicode-waarde XXXX |
Voorbeeld:
SELECT JSON_UNQUOTE('Feeling\tGood');
Resultaat:
+-------------------------------+ | JSON_UNQUOTE('Feeling\tGood') | +-------------------------------+ | Feeling Good | +-------------------------------+
Hier gebruikte ik de \t
reeks om een tabteken toe te voegen aan de tekenreeks.
Als ik de SQL-modus instel op NO_BACKSLASH_ESCAPES
, de reeks heeft geen speciale betekenis en de letterlijke reeks wordt zonder interpretatie in de uitvoer opgenomen:
SET @@sql_mode = 'NO_BACKSLASH_ESCAPES';
SELECT JSON_UNQUOTE('Feeling\tGood');
Resultaat:
+-------------------------------+ | JSON_UNQUOTE('Feeling\tGood') | +-------------------------------+ | Feeling\tGood | +-------------------------------+
Nullargumenten
Als het argument NULL
is , het resultaat is NULL
:
SELECT JSON_UNQUOTE(null);
Resultaat:
+--------------------+ | JSON_UNQUOTE(null) | +--------------------+ | NULL | +--------------------+
Onjuist aantal parameters
Aanroepen van JSON_UNQUOTE()
zonder een argument resulteert in een fout:
SELECT JSON_UNQUOTE();
Resultaat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_UNQUOTE'
Het is hetzelfde als je te veel argumenten geeft:
SELECT JSON_UNQUOTE('a', 'b');
Resultaat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_UNQUOTE'