MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

MariaDB JSON_DEPTH() erklärt

In MariaDB, JSON_DEPTH() ist eine integrierte Funktion, mit der Sie die Tiefe eines JSON-Dokuments überprüfen können.

Es akzeptiert das JSON-Dokument als Argument und gibt die maximale Tiefe des Dokuments zurück.

Syntax

Die Syntax lautet wie folgt:

JSON_DEPTH(json_doc)

Wobei json_doc ist das JSON-Dokument, für das die Tiefe zurückgegeben werden soll.

Beispiel

Hier ist ein Beispiel zur Veranschaulichung.

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

Ergebnis:

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

In diesem Fall ist die Tiefe 2 .

Skalare Werte und leere Objekte/Arrays

Skalare Werte oder leere Arrays oder Objekte haben eine Tiefe von 1 :

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

Ergebnis:

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

Tieferes JSON-Dokument

Hier ist ein Beispiel, das ein JSON-Dokument mit einer Tiefe von 4 verwendet :

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);

Ergebnis:

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

Null-Argumente

Wenn das Argument NULL ist , ist das Ergebnis NULL :

SELECT JSON_DEPTH(null);

Ergebnis:

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

Ungültiges JSON

Das Übergeben von ungültigem JSON führt zu NULL mit einer Warnung:

SELECT JSON_DEPTH('{1}');

Ergebnis:

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

Sehen wir uns die Warnung an:

SHOW WARNINGS;

Ergebnis:

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

Falsche Parameteranzahl

Wenn Sie keine Argumente angeben, wird ein Fehler ausgegeben:

SELECT JSON_DEPTH();

Ergebnis:

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

Das Gleiche gilt, wenn Sie zu viele Argumente angeben:

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

Ergebnis:

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