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