I SQLite, json_quote()
funktion konverterar ett tal eller en sträng till dess motsvarande JSON-representation.
Vi anger numret eller strängen som ett argument när vi anropar funktionen, och funktionen returnerar en JSON-representation av det värdet.
Syntax
Syntaxen ser ut så här:
json_quote(X)
Där X
är ett tal eller en sträng.
Exempel
Så här händer när vi skickar en sträng till funktionen:
SELECT json_quote('Super');
Resultat:
"Super"
Och här är ett nummer:
SELECT json_quote(10.45);
Resultat:
10.45
Här är en sträng som ser ut som en array:
SELECT json_quote('[10.45]');
Resultat:
"[10.45]"
Här är en sträng som ser ut som ett objekt:
SELECT json_quote('{ "score" : 10.45 }');
Resultat:
"{ \"score\" : 10.45 }"
Men om vi skickar argumentet i json()
funktion får vi detta:
SELECT json_quote(json('{ "score" : 10.45 }'));
Resultat:
{"score":10.45}
Nullvärden
Skickar null
returnerar null
:
SELECT json_quote( null );
Resultat:
null
Detta är faktiskt SQL-textvärdet null
. Vi kan verifiera detta genom att skicka det till json_type()
funktion:
SELECT json_type(json_quote( null ));
Resultat:
null
json_type()
funktion returnerar SQL-textvärdetypen för dess argument. I det här fallet returnerade den null
, vilket indikerar att json_quote()
funktion returnerade null
när vi passerade null
till det.
Om vi misstänker att vår SQLite CLI returnerar null
på grund av att ett faktiskt nollvärde returneras kan vi göra följande för att utesluta det:
.nullvalue N/A
Det säger till vårt kommandoradsgränssnitt att returnera N/A
närhelst ett nollvärde returneras.
Efter att ha kört kommandot ovan, låt oss köra de tidigare satserna igen, såväl som en operation som faktiskt resulterar i ett nullvärde:
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, att dividera ett tal med noll resulterar i ett nollvärde (många andra DBMS ger ett fel i sådana fall). I det här exemplet hade jag ställt in nullvärden för att returnera N/A
, och så kan vi se att det finns en skillnad mellan utdata från de två funktionerna och det faktiska nollvärdet. Det vill säga, det enda nollvärdet i ovanstående utdata finns i den sista kolumnen.
Med allt detta sagt kan ett nullvärde fortfarande resultera i SQL-textvärdet null
returneras när json_quote()
anropas . Kanske ett exempel illustrerar detta bättre än jag kan förklara 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 att de två första kolumnerna returnerar null
SQL-textvärde och de andra två kolumnerna returnerar ett verkligt nullvärde.
Godkänd boolean
Här är ett exempel på att skicka booleaner som true
och false
:
SELECT
json_quote( true ) AS true,
json_quote( false ) AS false;
Resultat:
+------+-------+ | true | false | +------+-------+ | 1 | 0 | +------+-------+
Ogiltigt antal argument
Att anropa funktionen utan att skicka ett argument resulterar i ett fel:
SELECT json_quote();
Resultat:
Parse error: wrong number of arguments to function json_quote() SELECT json_quote(); ^--- error here
Och att skicka för många argument resulterar också i ett fel:
SELECT json_quote( 1, 2 );
Resultat:
Parse error: wrong number of arguments to function json_quote() SELECT json_quote( 1, 2 ); ^--- error here