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