SQLite
 sql >> Base de données >  >> RDS >> SQLite

SQLite JSON_QUOTE()

Dans SQLite, le json_quote() convertit un nombre ou une chaîne dans sa représentation JSON correspondante.

Nous fournissons le nombre ou la chaîne comme argument lorsque nous appelons la fonction, et la fonction renvoie une représentation JSON de cette valeur.

Syntaxe

La syntaxe ressemble à ceci :

json_quote(X)

X est un nombre ou une chaîne.

Exemples

Voici ce qui se passe lorsque nous passons une chaîne à la fonction :

SELECT json_quote('Super');

Résultat :

"Super"

Et voici un chiffre :

SELECT json_quote(10.45);

Résultat :

10.45

Voici une chaîne qui ressemble à un tableau :

SELECT json_quote('[10.45]');

Résultat :

"[10.45]"

Voici une chaîne qui ressemble à un objet :

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

Résultat :

"{ \"score\" : 10.45 }"

Mais si nous passons l'argument dans le json() fonction, nous obtenons ceci :

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

Résultat :

{"score":10.45}

Valeurs nulles

Passer null renvoie null :

SELECT json_quote( null );

Résultat :

null

Il s'agit en fait de la valeur de texte SQL null . Nous pouvons vérifier cela en le passant au json_type() fonction :

SELECT json_type(json_quote( null ));

Résultat :

null

Le json_type() La fonction renvoie le type de valeur texte SQL de son argument. Dans ce cas, il a renvoyé null , ce qui indique que le json_quote() la fonction a renvoyé null quand nous avons passé null à elle.

Au cas où nous soupçonnerions que notre CLI SQLite renvoie null en raison du retour d'une valeur nulle réelle, nous pouvons procéder comme suit pour l'exclure :

.nullvalue N/A

Cela indique à notre interface de ligne de commande de renvoyer N/A chaque fois qu'une valeur nulle est renvoyée.

Après avoir exécuté la commande ci-dessus, exécutons à nouveau les instructions précédentes, ainsi qu'une opération qui aboutit en fait à une valeur nulle :

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

Résultat :

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

Dans SQLite, la division d'un nombre par zéro donne une valeur nulle (de nombreux autres SGBD génèrent une erreur dans de tels cas). Dans cet exemple, j'avais défini des valeurs nulles pour renvoyer N/A , et ainsi nous pouvons voir qu'il y a une différence entre la sortie des deux fonctions et la valeur nulle réelle. Autrement dit, la seule valeur nulle dans la sortie ci-dessus se trouve dans la dernière colonne.

Cela dit, une valeur nulle peut toujours entraîner la valeur de texte SQL null renvoyé lors de l'appel de json_quote() . Peut-être qu'un exemple illustre mieux cela que je ne peux l'expliquer :

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

Résultat :

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

Nous pouvons voir que les deux premières colonnes renvoient le null valeur de texte SQL et les deux autres colonnes renvoient une valeur nulle réelle.

Passer des booléens

Voici un exemple de passage de booléens tels que true et false :

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

Résultat :

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

Nombre d'arguments non valides

L'appel de la fonction sans passer d'argument génère une erreur :

SELECT json_quote();

Résultat :

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

Et passer trop d'arguments entraîne également une erreur :

SELECT json_quote( 1, 2 );

Résultat :

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