SQLite
 sql >> Baza danych >  >> RDS >> SQLite

SQLite JSON_QUOTE()

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Android Room - Jak zresetować automatycznie wygenerowany klucz podstawowy tabeli przy każdym uruchomieniu aplikacji?

  2. java.lang.IllegalArgumentException:kolumna '_id' nie istnieje

  3. Wstępnie wypełniona baza danych nie działa w API 28 nie zgłasza takiego wyjątku tabeli

  4. Eksportuj wyniki zapytania SQLite do pliku CSV

  5. Jak działa SQLite Random()