sql >> Database >  >> RDS >> SQLite

SQLite JSON_QUOTE()

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

  1. Prestatieverrassingen en aannames:DATEDIFF

  2. Leer de basisprincipes van Java-logboekregistratie

  3. java.util.MissingFormatArgumentException:Formaatspecificatie:s

  4. SQL Recursive CTE:Objecten zoeken die op eigenschap zijn gekoppeld