SQLite
 sql >> Database >  >> RDS >> SQLite

SQLite JSON_QUOTE()

In SQLite, il json_quote() La funzione converte un numero o una stringa nella sua rappresentazione JSON corrispondente.

Forniamo il numero o la stringa come argomento quando chiamiamo la funzione e la funzione restituisce una rappresentazione JSON di quel valore.

Sintassi

La sintassi è questa:

json_quote(X)

Dove X è un numero o una stringa.

Esempi

Ecco cosa succede quando passiamo una stringa alla funzione:

SELECT json_quote('Super');

Risultato:

"Super"

Ed ecco un numero:

SELECT json_quote(10.45);

Risultato:

10.45

Ecco una stringa che assomiglia a un array:

SELECT json_quote('[10.45]');

Risultato:

"[10.45]"

Ecco una stringa che assomiglia a un oggetto:

SELECT json_quote('{ "score" : 10.45 }');

Risultato:

"{ \"score\" : 10.45 }"

Ma se passiamo l'argomento nel json() funzione, otteniamo questo:

SELECT json_quote(json('{ "score" : 10.45 }'));

Risultato:

{"score":10.45}

Valori Nulli

Passaggio null restituisce null :

SELECT json_quote( null );

Risultato:

null

Questo è in realtà il valore del testo SQL null . Possiamo verificarlo passandolo a json_type() funzione:

SELECT json_type(json_quote( null ));

Risultato:

null

Il json_type() La funzione restituisce il tipo di valore di testo SQL del suo argomento. In questo caso ha restituito null , che indica che il json_quote() la funzione ha restituito null quando abbiamo passato null ad esso.

Nel caso sospettiamo che la nostra SQLite CLI restituisca null a causa della restituzione di un valore nullo effettivo, possiamo fare quanto segue per escluderlo:

.nullvalue N/A

Questo dice alla nostra interfaccia a riga di comando di restituire N/A ogni volta che viene restituito un valore nullo.

Dopo aver eseguito il comando precedente, eseguiamo nuovamente le istruzioni precedenti, oltre a un'operazione che effettivamente risulta in un valore nullo:

SELECT 
    json_quote( null ) AS json_quote,
    json_type(json_quote( null )) AS json_type,
    1 / 0 AS actual_null;

Risultato:

+------------+-----------+-------------+
| json_quote | json_type | actual_null |
+------------+-----------+-------------+
| null       | null      | N/A         |
+------------+-----------+-------------+

In SQLite, dividendo un numero per zero si ottiene un valore nullo (molti altri DBMS generano un errore in questi casi). In questo esempio, avevo impostato valori null per restituire N/A , e quindi possiamo vedere che c'è una differenza tra l'output delle due funzioni e il valore nullo effettivo. Cioè, l'unico valore nullo nell'output sopra è nell'ultima colonna.

Detto questo, un valore nullo può comunque risultare nel valore del testo SQL null restituito quando si chiama json_quote() . Forse un esempio lo illustra meglio di quanto io possa spiegarlo:

SELECT 
    json_quote( 1 / 0 ),
    json_type(json_quote( 1 / 0 )),
    json_type( 1 / 0 ),
    1 / 0;

Risultato:

+---------------------+--------------------------------+--------------------+-------+
| json_quote( 1 / 0 ) | json_type(json_quote( 1 / 0 )) | json_type( 1 / 0 ) | 1 / 0 |
+---------------------+--------------------------------+--------------------+-------+
| null                | null                           | N/A                | N/A   |
+---------------------+--------------------------------+--------------------+-------+

Possiamo vedere che le prime due colonne restituiscono null Il valore del testo SQL e le altre due colonne restituiscono un valore nullo effettivo.

Booleani di passaggio

Ecco un esempio di passaggio di valori booleani come true e false :

SELECT 
    json_quote( true ) AS true,
    json_quote( false ) AS false;

Risultato:

+------+-------+
| true | false |
+------+-------+
| 1    | 0     |
+------+-------+

Conteggio argomenti non valido

La chiamata della funzione senza passare un argomento genera un errore:

SELECT json_quote();

Risultato:

Parse error: wrong number of arguments to function json_quote()
  SELECT json_quote();
         ^--- error here

E anche passare troppi argomenti provoca un errore:

SELECT json_quote( 1, 2 );

Risultato:

Parse error: wrong number of arguments to function json_quote()
  SELECT json_quote( 1, 2 );
         ^--- error here