W SQLite json_quote() funkcja konwertuje liczbę lub ciąg znaków na odpowiednią reprezentację JSON.
Podajemy liczbę lub ciąg znaków jako argument, gdy wywołujemy funkcję, a funkcja zwraca reprezentację tej wartości w formacie JSON.
Składnia
Składnia wygląda tak:
json_quote(X)
Gdzie X to liczba lub ciąg.
Przykłady
Oto, co się dzieje, gdy przekazujemy ciąg do funkcji:
SELECT json_quote('Super'); Wynik:
"Super"
A oto liczba:
SELECT json_quote(10.45); Wynik:
10.45
Oto ciąg, który wygląda jak tablica:
SELECT json_quote('[10.45]'); Wynik:
"[10.45]"
Oto ciąg, który wygląda jak obiekt:
SELECT json_quote('{ "score" : 10.45 }'); Wynik:
"{ \"score\" : 10.45 }"
Ale jeśli przekażemy argument w json() funkcja, otrzymujemy to:
SELECT json_quote(json('{ "score" : 10.45 }')); Wynik:
{"score":10.45} Wartości puste
Przekazywanie null zwraca null :
SELECT json_quote( null ); Wynik:
null
W rzeczywistości jest to wartość tekstowa SQL null . Możemy to zweryfikować, przekazując go do json_type() funkcja:
SELECT json_type(json_quote( null )); Wynik:
null
json_type() funkcja zwraca typ wartości tekstowej SQL swojego argumentu. W tym przypadku zwrócił null , co wskazuje, że json_quote() funkcja zwróciła null kiedy przekazaliśmy null do niego.
W przypadku podejrzenia, że nasz SQLite CLI zwraca null ze względu na zwracaną rzeczywistą wartość null, możemy wykonać następujące czynności, aby to wykluczyć:
.nullvalue N/A
To mówi naszemu interfejsowi wiersza poleceń, aby zwrócił N/A za każdym razem, gdy zwracana jest wartość null.
Po uruchomieniu powyższego polecenia, ponownie uruchom poprzednie instrukcje, a także operację, która faktycznie daje wartość null:
SELECT
json_quote( null ) AS json_quote,
json_type(json_quote( null )) AS json_type,
1 / 0 AS actual_null; Wynik:
+------------+-----------+-------------+ | json_quote | json_type | actual_null | +------------+-----------+-------------+ | null | null | N/A | +------------+-----------+-------------+
W SQLite dzielenie liczby przez zero daje w wyniku wartość pustą (wiele innych DBMS w takich przypadkach zgłasza błąd). W tym przykładzie ustawiłem wartości null, aby zwrócić N/A , a więc widzimy, że istnieje różnica między danymi wyjściowymi dwóch funkcji a rzeczywistą wartością null. Oznacza to, że jedyna wartość null w powyższym wyniku znajduje się w ostatniej kolumnie.
Powiedziawszy to wszystko, wartość null może nadal skutkować wartością tekstową SQL null zwracane podczas wywoływania metody json_quote() . Być może przykład ilustruje to lepiej, niż potrafię to wyjaśnić:
SELECT
json_quote( 1 / 0 ),
json_type(json_quote( 1 / 0 )),
json_type( 1 / 0 ),
1 / 0; Wynik:
+---------------------+--------------------------------+--------------------+-------+ | json_quote( 1 / 0 ) | json_type(json_quote( 1 / 0 )) | json_type( 1 / 0 ) | 1 / 0 | +---------------------+--------------------------------+--------------------+-------+ | null | null | N/A | N/A | +---------------------+--------------------------------+--------------------+-------+
Widzimy, że pierwsze dwie kolumny zwracają null Wartość tekstowa SQL, a pozostałe dwie kolumny zwracają rzeczywistą wartość null.
Przekazywanie wartości logicznych
Oto przykład przekazywania wartości logicznych, takich jak true i false :
SELECT
json_quote( true ) AS true,
json_quote( false ) AS false; Wynik:
+------+-------+ | true | false | +------+-------+ | 1 | 0 | +------+-------+
Nieprawidłowa liczba argumentów
Wywołanie funkcji bez przekazania argumentu skutkuje błędem:
SELECT json_quote(); Wynik:
Parse error: wrong number of arguments to function json_quote()
SELECT json_quote();
^--- error here Przekazywanie zbyt wielu argumentów również skutkuje błędem:
SELECT json_quote( 1, 2 ); Wynik:
Parse error: wrong number of arguments to function json_quote()
SELECT json_quote( 1, 2 );
^--- error here