I SQLite er json_quote()
funktion konverterer et tal eller en streng til dens tilsvarende JSON-repræsentation.
Vi angiver tallet eller strengen som et argument, når vi kalder funktionen, og funktionen returnerer en JSON-repræsentation af denne værdi.
Syntaks
Syntaksen ser sådan ud:
json_quote(X)
Hvor X
er et tal eller en streng.
Eksempler
Her er, hvad der sker, når vi sender en streng til funktionen:
SELECT json_quote('Super');
Resultat:
"Super"
Og her er et tal:
SELECT json_quote(10.45);
Resultat:
10.45
Her er en streng, der ligner en matrix:
SELECT json_quote('[10.45]');
Resultat:
"[10.45]"
Her er en streng, der ligner et objekt:
SELECT json_quote('{ "score" : 10.45 }');
Resultat:
"{ \"score\" : 10.45 }"
Men hvis vi sender argumentet i json()
funktion, får vi dette:
SELECT json_quote(json('{ "score" : 10.45 }'));
Resultat:
{"score":10.45}
Nul-værdier
Sender null
returnerer null
:
SELECT json_quote( null );
Resultat:
null
Dette er faktisk SQL-tekstværdien null
. Vi kan bekræfte dette ved at sende det til json_type()
funktion:
SELECT json_type(json_quote( null ));
Resultat:
null
json_type()
funktion returnerer SQL-tekstværditypen for dets argument. I dette tilfælde returnerede den null
, som angiver, at json_quote()
funktion returnerede null
da vi bestod null
til det.
Hvis vi har mistanke om, at vores SQLite CLI returnerer null
på grund af en faktisk nulværdi, der returneres, kan vi gøre følgende for at udelukke det:
.nullvalue N/A
Det fortæller vores kommandolinjegrænseflade at returnere N/A
hver gang en nulværdi returneres.
Efter at have kørt ovenstående kommando, lad os køre de tidligere udsagn igen, samt en operation, der faktisk resulterer i en null-værdi:
SELECT
json_quote( null ) AS json_quote,
json_type(json_quote( null )) AS json_type,
1 / 0 AS actual_null;
Resultat:
+------------+-----------+-------------+ | json_quote | json_type | actual_null | +------------+-----------+-------------+ | null | null | N/A | +------------+-----------+-------------+
I SQLite resulterer dividering af et tal med nul i en nulværdi (mange andre DBMS'er giver en fejl i sådanne tilfælde). I dette eksempel havde jeg sat null-værdier for at returnere N/A
, og så vi kan se, at der er en forskel mellem outputtet af de to funktioner og den faktiske nulværdi. Det vil sige, at den eneste nulværdi i ovenstående output er i den sidste kolonne.
Når alt det er sagt, kan en null-værdi stadig resultere i SQL-tekstværdien null
returneres, når json_quote()
kaldes . Måske illustrerer et eksempel dette bedre, end jeg kan forklare det:
SELECT
json_quote( 1 / 0 ),
json_type(json_quote( 1 / 0 )),
json_type( 1 / 0 ),
1 / 0;
Resultat:
+---------------------+--------------------------------+--------------------+-------+ | json_quote( 1 / 0 ) | json_type(json_quote( 1 / 0 )) | json_type( 1 / 0 ) | 1 / 0 | +---------------------+--------------------------------+--------------------+-------+ | null | null | N/A | N/A | +---------------------+--------------------------------+--------------------+-------+
Vi kan se, at de to første kolonner returnerer null
SQL-tekstværdi, og de to andre kolonner returnerer en faktisk nulværdi.
Beståer Booleans
Her er et eksempel på videregivelse af booleaner såsom true
og false
:
SELECT
json_quote( true ) AS true,
json_quote( false ) AS false;
Resultat:
+------+-------+ | true | false | +------+-------+ | 1 | 0 | +------+-------+
Ugyldigt antal argumenter
Kaldning af funktionen uden at sende et argument resulterer i en fejl:
SELECT json_quote();
Resultat:
Parse error: wrong number of arguments to function json_quote() SELECT json_quote(); ^--- error here
Og at sende for mange argumenter resulterer også i en fejl:
SELECT json_quote( 1, 2 );
Resultat:
Parse error: wrong number of arguments to function json_quote() SELECT json_quote( 1, 2 ); ^--- error here