W MariaDB, JSON_UNQUOTE()
to wbudowana funkcja, która usuwa cudzysłowy z wartości JSON. Innymi słowy, „usuwa cytat” z wartości JSON.
Składnia
Składnia wygląda tak:
JSON_UNQUOTE(val)
Przykład
Oto przykład do zademonstrowania.
SELECT JSON_UNQUOTE('"Eggs"');
Wynik:
+------------------------+ | JSON_UNQUOTE('"Eggs"') | +------------------------+ | Eggs | +------------------------+
Znaki ucieczki
Jeśli wartość zawiera znak odwrotnego ukośnika (\
), jest zwykle ignorowana. Jednak niektóre sekwencje zawierające ukośnik odwrotny mogą mieć specjalne znaczenie i mogą wpływać na wynik JSON_UNQUOTE()
.
Będzie to zależeć od tego, czy tryb SQL jest ustawiony na NO_BACKSLASH_ESCAPES
. Gdy tryb SQL jest ustawiony na NO_BACKSLASH_ESCAPES
, wyłącza to używanie znaku odwrotnego ukośnika jako znaku zmiany znaczenia w łańcuchach, co czyni go równoważnym ze zwykłym znakiem.
W przeciwnym razie poniższe sekwencje będą prawdziwe:
Sekwencja ucieczki | Znak |
---|---|
\" | Podwójny cytat (" ) |
\b | Odwrotny ukośnik |
\f | Formularz |
\n | Nowy wiersz (znak nowego wiersza) |
\r | Zwrot karetki |
\t | Karta |
\\ | Ukośnik odwrotny (\ ) |
\uXXXX | UTF-8 bajtów dla wartości Unicode XXXX |
Przykład:
SELECT JSON_UNQUOTE('Feeling\tGood');
Wynik:
+-------------------------------+ | JSON_UNQUOTE('Feeling\tGood') | +-------------------------------+ | Feeling Good | +-------------------------------+
Tutaj użyłem \t
sekwencja, aby dodać znak tabulacji w ciągu.
Jeśli ustawię tryb SQL na NO_BACKSLASH_ESCAPES
, sekwencja nie ma specjalnego znaczenia, a sekwencja dosłowna jest dołączana do wyniku bez interpretacji:
SET @@sql_mode = 'NO_BACKSLASH_ESCAPES';
SELECT JSON_UNQUOTE('Feeling\tGood');
Wynik:
+-------------------------------+ | JSON_UNQUOTE('Feeling\tGood') | +-------------------------------+ | Feeling\tGood | +-------------------------------+
Argumenty zerowe
Jeśli argumentem jest NULL
, wynik to NULL
:
SELECT JSON_UNQUOTE(null);
Wynik:
+--------------------+ | JSON_UNQUOTE(null) | +--------------------+ | NULL | +--------------------+
Nieprawidłowa liczba parametrów
Wywołanie JSON_UNQUOTE()
bez argumentu powoduje błąd:
SELECT JSON_UNQUOTE();
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_UNQUOTE'
Tak samo jest, gdy podajesz zbyt wiele argumentów:
SELECT JSON_UNQUOTE('a', 'b');
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_UNQUOTE'