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