SQLite
 sql >> Datenbank >  >> RDS >> SQLite

SQLite JSON_QUOTE()

In SQLite das json_quote() Funktion konvertiert eine Zahl oder einen String in die entsprechende JSON-Darstellung.

Wir stellen die Zahl oder den String als Argument bereit, wenn wir die Funktion aufrufen, und die Funktion gibt eine JSON-Darstellung dieses Werts zurück.

Syntax

Die Syntax lautet wie folgt:

json_quote(X)

Wobei X ist eine Zahl oder ein String.

Beispiele

Folgendes passiert, wenn wir einen String an die Funktion übergeben:

SELECT json_quote('Super');

Ergebnis:

"Super"

Und hier ist eine Zahl:

SELECT json_quote(10.45);

Ergebnis:

10.45

Hier ist eine Zeichenfolge, die wie ein Array aussieht:

SELECT json_quote('[10.45]');

Ergebnis:

"[10.45]"

Hier ist eine Zeichenfolge, die wie ein Objekt aussieht:

SELECT json_quote('{ "score" : 10.45 }');

Ergebnis:

"{ \"score\" : 10.45 }"

Aber wenn wir das Argument in json() übergeben Funktion erhalten wir Folgendes:

SELECT json_quote(json('{ "score" : 10.45 }'));

Ergebnis:

{"score":10.45}

Nullwerte

Übergabe von null gibt null zurück :

SELECT json_quote( null );

Ergebnis:

null

Dies ist eigentlich der SQL-Textwert null . Wir können dies überprüfen, indem wir es an json_type() übergeben Funktion:

SELECT json_type(json_quote( null ));

Ergebnis:

null

Der json_type() Die Funktion gibt den SQL-Textwerttyp ihres Arguments zurück. In diesem Fall wurde null zurückgegeben , was darauf hinweist, dass json_quote() Funktion hat null zurückgegeben wenn wir null übergeben haben dazu.

Falls wir vermuten, dass unsere SQLite-CLI null zurückgibt Da tatsächlich ein Nullwert zurückgegeben wird, können wir dies folgendermaßen ausschließen:

.nullvalue N/A

Das weist unsere Befehlszeilenschnittstelle an, N/A zurückzugeben immer wenn ein Nullwert zurückgegeben wird.

Nachdem Sie den obigen Befehl ausgeführt haben, lassen Sie uns die vorherigen Anweisungen erneut ausführen, sowie eine Operation, die tatsächlich zu einem Nullwert führt:

SELECT 
    json_quote( null ) AS json_quote,
    json_type(json_quote( null )) AS json_type,
    1 / 0 AS actual_null;

Ergebnis:

+------------+-----------+-------------+
| json_quote | json_type | actual_null |
+------------+-----------+-------------+
| null       | null      | N/A         |
+------------+-----------+-------------+

In SQLite führt die Division einer Zahl durch Null zu einem Nullwert (viele andere DBMSs geben in solchen Fällen einen Fehler aus). In diesem Beispiel hatte ich Nullwerte gesetzt, um N/A zurückzugeben , und so können wir sehen, dass es einen Unterschied zwischen der Ausgabe der beiden Funktionen und dem tatsächlichen Nullwert gibt. Das heißt, der einzige Nullwert in der obigen Ausgabe befindet sich in der letzten Spalte.

Abgesehen davon kann ein Nullwert immer noch zum SQL-Textwert null führen zurückgegeben wird, wenn json_quote() aufgerufen wird . Vielleicht veranschaulicht dies ein Beispiel besser, als ich es erklären kann:

SELECT 
    json_quote( 1 / 0 ),
    json_type(json_quote( 1 / 0 )),
    json_type( 1 / 0 ),
    1 / 0;

Ergebnis:

+---------------------+--------------------------------+--------------------+-------+
| json_quote( 1 / 0 ) | json_type(json_quote( 1 / 0 )) | json_type( 1 / 0 ) | 1 / 0 |
+---------------------+--------------------------------+--------------------+-------+
| null                | null                           | N/A                | N/A   |
+---------------------+--------------------------------+--------------------+-------+

Wir können sehen, dass die ersten beiden Spalten den null zurückgeben SQL-Textwert, und die anderen beiden Spalten geben einen tatsächlichen Nullwert zurück.

Boolesche Werte übergeben

Hier ist ein Beispiel für die Übergabe von booleschen Werten wie true und false :

SELECT 
    json_quote( true ) AS true,
    json_quote( false ) AS false;

Ergebnis:

+------+-------+
| true | false |
+------+-------+
| 1    | 0     |
+------+-------+

Ungültige Argumentanzahl

Der Aufruf der Funktion ohne Übergabe eines Arguments führt zu einem Fehler:

SELECT json_quote();

Ergebnis:

Parse error: wrong number of arguments to function json_quote()
  SELECT json_quote();
         ^--- error here

Und das Übergeben zu vieler Argumente führt ebenfalls zu einem Fehler:

SELECT json_quote( 1, 2 );

Ergebnis:

Parse error: wrong number of arguments to function json_quote()
  SELECT json_quote( 1, 2 );
         ^--- error here