V SQLite, json_quote() funkce převede číslo nebo řetězec na odpovídající reprezentaci JSON.
Při volání funkce poskytujeme číslo nebo řetězec jako argument a funkce vrací JSON reprezentaci této hodnoty.
Syntaxe
Syntaxe vypadá takto:
json_quote(X)
Kde X je číslo nebo řetězec.
Příklady
Zde je to, co se stane, když funkci předáme řetězec:
SELECT json_quote('Super'); Výsledek:
"Super"
A tady je číslo:
SELECT json_quote(10.45); Výsledek:
10.45
Zde je řetězec, který vypadá jako pole:
SELECT json_quote('[10.45]'); Výsledek:
"[10.45]"
Zde je řetězec, který vypadá jako objekt:
SELECT json_quote('{ "score" : 10.45 }'); Výsledek:
"{ \"score\" : 10.45 }"
Ale pokud předáme argument v json() funkce, dostaneme toto:
SELECT json_quote(json('{ "score" : 10.45 }')); Výsledek:
{"score":10.45} Nulové hodnoty
Předávání null vrátí null :
SELECT json_quote( null ); Výsledek:
null
Toto je ve skutečnosti textová hodnota SQL null . Můžeme to ověřit předáním json_type() funkce:
SELECT json_type(json_quote( null )); Výsledek:
null
json_type() funkce vrací typ textové hodnoty SQL svého argumentu. V tomto případě vrátil null , což znamená, že json_quote() funkce vrátila null když jsme předali null k tomu.
V případě, že máme podezření, že naše SQLite CLI vrací null kvůli vrácené skutečné hodnotě null můžeme toto vyloučit takto:
.nullvalue N/A
To říká našemu rozhraní příkazového řádku, aby vrátilo N/A kdykoli je vrácena hodnota null.
Po spuštění výše uvedeného příkazu spusťte znovu předchozí příkazy a také operaci, která ve skutečnosti vede k hodnotě null:
SELECT
json_quote( null ) AS json_quote,
json_type(json_quote( null )) AS json_type,
1 / 0 AS actual_null; Výsledek:
+------------+-----------+-------------+ | json_quote | json_type | actual_null | +------------+-----------+-------------+ | null | null | N/A | +------------+-----------+-------------+
V SQLite výsledkem dělení čísla nulou je hodnota null (mnoho jiných DBMS v takových případech vyvolá chybu). V tomto příkladu jsem nastavil hodnoty null tak, aby vrátily N/A , a tak můžeme vidět, že existuje rozdíl mezi výstupem těchto dvou funkcí a skutečnou hodnotou null. To znamená, že jediná nulová hodnota ve výše uvedeném výstupu je v posledním sloupci.
Po tom všem může hodnota null stále vést k textové hodnotě SQL null se vrací při volání json_quote() . Možná to lépe ilustruje příklad, než bych to dokázal vysvětlit:
SELECT
json_quote( 1 / 0 ),
json_type(json_quote( 1 / 0 )),
json_type( 1 / 0 ),
1 / 0; Výsledek:
+---------------------+--------------------------------+--------------------+-------+ | json_quote( 1 / 0 ) | json_type(json_quote( 1 / 0 )) | json_type( 1 / 0 ) | 1 / 0 | +---------------------+--------------------------------+--------------------+-------+ | null | null | N/A | N/A | +---------------------+--------------------------------+--------------------+-------+
Vidíme, že první dva sloupce vrací null Textová hodnota SQL a další dva sloupce vrátí skutečnou hodnotu null.
Předávání booleovských hodnot
Zde je příklad předávání booleovských hodnot, jako je true a false :
SELECT
json_quote( true ) AS true,
json_quote( false ) AS false; Výsledek:
+------+-------+ | true | false | +------+-------+ | 1 | 0 | +------+-------+
Neplatný počet argumentů
Volání funkce bez předání argumentu má za následek chybu:
SELECT json_quote(); Výsledek:
Parse error: wrong number of arguments to function json_quote()
SELECT json_quote();
^--- error here A předání příliš mnoha argumentů také vede k chybě:
SELECT json_quote( 1, 2 ); Výsledek:
Parse error: wrong number of arguments to function json_quote()
SELECT json_quote( 1, 2 );
^--- error here