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

MariaDB JSON_DEPTH() expliqué

Dans MariaDB, JSON_DEPTH() est une fonction intégrée qui vous permet de vérifier la profondeur d'un document JSON.

Il accepte le document JSON comme argument et renvoie la profondeur maximale du document.

Syntaxe

La syntaxe ressemble à ceci :

JSON_DEPTH(json_doc)

json_doc est le document JSON pour lequel renvoyer la profondeur.

Exemple

Voici un exemple pour illustrer.

SELECT JSON_DEPTH('{ "name": "Wag" }');

Résultat :

+---------------------------------+
| JSON_DEPTH('{ "name": "Wag" }') |
+---------------------------------+
|                               2 |
+---------------------------------+

Dans ce cas, la profondeur est 2 .

Valeurs scalaires et objets/tableaux vides

Les valeurs scalaires ou les tableaux ou objets vides ont une profondeur de 1 :

SELECT 
    JSON_DEPTH('{}'),
    JSON_DEPTH('[]'),
    JSON_DEPTH(1);

Résultat :

+------------------+------------------+---------------+
| JSON_DEPTH('{}') | JSON_DEPTH('[]') | JSON_DEPTH(1) |
+------------------+------------------+---------------+
|                1 |                1 |             1 |
+------------------+------------------+---------------+

Document JSON plus approfondi

Voici un exemple qui utilise un document JSON avec une profondeur de 4 :

SET @json_document = '
    { 
        "_id" : 1, 
        "name" : "Wag", 
        "details" : {
            "type" : "Dog", 
            "weight" : 20,
            "awards" : { 
                "Florida Dog Awards" : "Top Dog", 
                "New York Marathon" : "Fastest Dog", 
                "Sumo 2020" : "Biggest Dog"
            }
        }
    }
';
SELECT JSON_DEPTH(@json_document);

Résultat :

+----------------------------+
| JSON_DEPTH(@json_document) |
+----------------------------+
|                          4 |
+----------------------------+

Arguments nuls

Si l'argument est NULL , le résultat est NULL :

SELECT JSON_DEPTH(null);

Résultat :

+------------------+
| JSON_DEPTH(null) |
+------------------+
|             NULL |
+------------------+

JSON non valide

Passer des résultats JSON invalides dans NULL avec un avertissement :

SELECT JSON_DEPTH('{1}');

Résultat :

+-------------------+
| JSON_DEPTH('{1}') |
+-------------------+
|              NULL |
+-------------------+
1 row in set, 1 warning (0.000 sec)

Voyons l'avertissement :

SHOW WARNINGS;

Résultat :

+---------+------+--------------------------------------------------------------------------------+
| Level   | Code | Message                                                                        |
+---------+------+--------------------------------------------------------------------------------+
| Warning | 4038 | Syntax error in JSON text in argument 1 to function 'json_depth' at position 2 |
+---------+------+--------------------------------------------------------------------------------+

Nombre de paramètres incorrect

Ne fournir aucun argument génère une erreur :

SELECT JSON_DEPTH();

Résultat :

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

Il en va de même lorsque vous fournissez trop d'arguments :

SELECT JSON_DEPTH('{"a": 1}', 2);

Résultat :

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