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)
Où 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