In SQLite, de json_quote() functie converteert een getal of tekenreeks naar de bijbehorende JSON-representatie.
We geven het getal of de tekenreeks als argument wanneer we de functie aanroepen, en de functie retourneert een JSON-representatie van die waarde.
Syntaxis
De syntaxis gaat als volgt:
json_quote(X)
Waar X is een getal of tekenreeks.
Voorbeelden
Dit is wat er gebeurt als we een string doorgeven aan de functie:
SELECT json_quote('Super'); Resultaat:
"Super"
En hier is een nummer:
SELECT json_quote(10.45); Resultaat:
10.45
Hier is een string die eruitziet als een array:
SELECT json_quote('[10.45]'); Resultaat:
"[10.45]"
Hier is een string die eruitziet als een object:
SELECT json_quote('{ "score" : 10.45 }'); Resultaat:
"{ \"score\" : 10.45 }"
Maar als we het argument doorgeven in de json() functie krijgen we dit:
SELECT json_quote(json('{ "score" : 10.45 }')); Resultaat:
{"score":10.45} Null-waarden
Doorgeven van null retourneert null :
SELECT json_quote( null ); Resultaat:
null
Dit is eigenlijk de SQL-tekstwaarde null . We kunnen dit verifiëren door het door te geven aan de json_type() functie:
SELECT json_type(json_quote( null )); Resultaat:
null
De json_type() functie retourneert het SQL-tekstwaardetype van zijn argument. In dit geval retourneerde het null , wat aangeeft dat de json_quote() functie geretourneerd null toen we null passeerden ernaar toe.
In het geval dat we vermoeden dat onze SQLite CLI null retourneert omdat een werkelijke null-waarde wordt geretourneerd, kunnen we het volgende doen om dat uit te sluiten:
.nullvalue N/A
Dat vertelt onze opdrachtregelinterface om N/A . te retourneren telkens wanneer een null-waarde wordt geretourneerd.
Nadat we de bovenstaande opdracht hebben uitgevoerd, laten we de vorige instructies opnieuw uitvoeren, evenals een bewerking die daadwerkelijk resulteert in een null-waarde:
SELECT
json_quote( null ) AS json_quote,
json_type(json_quote( null )) AS json_type,
1 / 0 AS actual_null; Resultaat:
+------------+-----------+-------------+ | json_quote | json_type | actual_null | +------------+-----------+-------------+ | null | null | N/A | +------------+-----------+-------------+
In SQLite resulteert het delen van een getal door nul in een null-waarde (veel andere DBMS'en geven in dergelijke gevallen een fout). In dit voorbeeld had ik null-waarden ingesteld om N/A . te retourneren , en dus kunnen we zien dat er een verschil is tussen de uitvoer van de twee functies en de werkelijke nulwaarde. Dat wil zeggen, de enige null-waarde in de bovenstaande uitvoer staat in de laatste kolom.
Dat gezegd hebbende, kan een null-waarde nog steeds resulteren in de SQL-tekstwaarde null wordt geretourneerd bij het aanroepen van json_quote() . Misschien illustreert een voorbeeld dit beter dan ik het kan uitleggen:
SELECT
json_quote( 1 / 0 ),
json_type(json_quote( 1 / 0 )),
json_type( 1 / 0 ),
1 / 0; Resultaat:
+---------------------+--------------------------------+--------------------+-------+ | json_quote( 1 / 0 ) | json_type(json_quote( 1 / 0 )) | json_type( 1 / 0 ) | 1 / 0 | +---------------------+--------------------------------+--------------------+-------+ | null | null | N/A | N/A | +---------------------+--------------------------------+--------------------+-------+
We kunnen zien dat de eerste twee kolommen de null . retourneren SQL-tekstwaarde en de andere twee kolommen retourneren een werkelijke null-waarde.
Booleans doorgeven
Hier is een voorbeeld van het doorgeven van booleans zoals true en false :
SELECT
json_quote( true ) AS true,
json_quote( false ) AS false; Resultaat:
+------+-------+ | true | false | +------+-------+ | 1 | 0 | +------+-------+
Ongeldig aantal argumenten
Het aanroepen van de functie zonder een argument door te geven resulteert in een fout:
SELECT json_quote(); Resultaat:
Parse error: wrong number of arguments to function json_quote()
SELECT json_quote();
^--- error here En het doorgeven van te veel argumenten resulteert ook in een fout:
SELECT json_quote( 1, 2 ); Resultaat:
Parse error: wrong number of arguments to function json_quote()
SELECT json_quote( 1, 2 );
^--- error here