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

Explication de MariaDB JSON_TYPE()

Dans MariaDB, JSON_TYPE() est une fonction intégrée qui renvoie le type d'une valeur JSON, sous forme de chaîne.

Syntaxe

La syntaxe ressemble à ceci :

JSON_TYPE(json_val)

json_val est la valeur pour laquelle renvoyer le type.

Types d'objets

Les types de retour possibles sont répertoriés dans le tableau suivant :

Type de retour Valeur Exemple
ARRAY Tableau JSON. [1, 2, 3]
OBJECT Objet JSON. {"a":"1"}
BOOLEAN JSON vrai/faux littéral. true ou false
DOUBLE Un nombre avec au moins une décimale à virgule flottante. 1.2
INTEGER Un nombre sans décimale à virgule flottante. 1
NULL JSON null littéral. Ceci est renvoyé sous forme de chaîne et ne doit pas être confondu avec le SQL NULL valeur. null
STRING Chaîne JSON. "bird"

Exemple

Voici un exemple pour illustrer.

SET @json = '
    { 
        "name" : "Fluffy", 
        "type" : "Cat" 
    }
';

SELECT JSON_TYPE(@json);

Résultat :

+------------------+
| JSON_TYPE(@json) |
+------------------+
| OBJECT           |
+------------------+

Dans cet exemple, j'ai passé un document JSON entier, qui a un type de OBJECT .

Voici d'autres exemples :

SELECT 
    JSON_TYPE('[1, 2, 3]'),
    JSON_TYPE('{ "a" : 1 }'),
    JSON_TYPE('true'),
    JSON_TYPE('false'),
    JSON_TYPE(10.59),
    JSON_TYPE(10),
    JSON_TYPE(null),
    JSON_TYPE('"Fuzzy Smith"');

Résultat (en utilisant la sortie verticale) :

    JSON_TYPE('[1, 2, 3]'): ARRAY
  JSON_TYPE('{ "a" : 1 }'): OBJECT
         JSON_TYPE('true'): BOOLEAN
        JSON_TYPE('false'): BOOLEAN
          JSON_TYPE(10.59): DOUBLE
             JSON_TYPE(10): INTEGER
           JSON_TYPE(null): NULL
JSON_TYPE('"Fuzzy Smith"'): STRING

Extraire la valeur d'un document JSON

Dans les exemples précédents, j'ai passé chaque valeur directement à la fonction en tant que littéral.

Nous pouvons combiner JSON_TYPE() avec d'autres fonctions, telles que JSON_EXTRACT() pour connaître le type d'une valeur dans un document JSON plus volumineux. Voici un exemple d'extraction d'une valeur d'un document JSON afin de connaître son type :

SET @json = '
    { 
        "name" : "Wag", 
        "scores" : [8, 0, 9] 
    }
';

SELECT 
    JSON_TYPE(JSON_EXTRACT(@json, '$.name')) AS Result;

Résultat :

+--------+
| Result |
+--------+
| STRING |
+--------+

Voici un autre exemple qui renvoie plus de types :

SET @json = '
    { 
        "name" : "Wag", 
        "scores" : [8, 0, 9],
        "weight" : 10.50,
        "height" : null,
        "age" : 4
    }
';

SELECT 
    JSON_TYPE(
        JSON_EXTRACT(@json, '$.name')
        ) AS a,
    JSON_TYPE(
        JSON_EXTRACT(@json, '$.scores')
        ) AS b,
    JSON_TYPE(
        JSON_EXTRACT(@json, '$.scores[0]')
        ) AS c,
    JSON_TYPE(
        JSON_EXTRACT(@json, '$.weight')
        ) AS d,
    JSON_TYPE(
        JSON_EXTRACT(@json, '$.height')
        ) AS e,
    JSON_TYPE(
        JSON_EXTRACT(@json, '$.age')
        ) AS f;

Résultat :

+--------+-------+---------+--------+------+---------+
| a      | b     | c       | d      | e    | f       |
+--------+-------+---------+--------+------+---------+
| STRING | ARRAY | INTEGER | DOUBLE | NULL | INTEGER |
+--------+-------+---------+--------+------+---------+

Argument nul

Si l'argument est null , puis null est renvoyé.

SELECT JSON_TYPE(null);

Résultat :

+-----------------+
| JSON_TYPE(null) |
+-----------------+
| NULL            |
+-----------------+

Nombre de paramètres incorrect

Appel de JSON_TYPE() sans argument génère une erreur :

SELECT JSON_TYPE();

Résultat :

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_TYPE'

Il en est de même lorsque trop d'arguments sont passés :

SELECT JSON_TYPE(1, 2);

Résultat :

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_TYPE'