sql >> Databáze >  >> RDS >> SQLite

SQLite JSON_QUOTE()

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

  1. Jak mohu změnit existující sloupec jako identitu v PostgreSQL 11.1

  2. Jak přidat logo do záhlaví sestavy v aplikaci Access

  3. MySQL UPDATE a SELECT v jednom průchodu

  4. Správa uživatelských účtů, role, oprávnění, autentizace PHP a MySQL