sql >> Database teknologi >  >> RDS >> MariaDB

MariaDB JSON_DEPTH() Forklaret

I MariaDB, JSON_DEPTH() er en indbygget funktion, der giver dig mulighed for at kontrollere dybden af ​​et JSON-dokument.

Det accepterer JSON-dokumentet som et argument og returnerer den maksimale dybde af dokumentet.

Syntaks

Syntaksen ser sådan ud:

JSON_DEPTH(json_doc)

Hvor json_doc er det JSON-dokument, som dybden skal returneres for.

Eksempel

Her er et eksempel til at demonstrere.

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

Resultat:

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

I dette tilfælde er dybden 2 .

Skalære værdier og tomme objekter/arrays

Skalære værdier eller tomme arrays eller objekter har en dybde på 1 :

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

Resultat:

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

Dybere JSON-dokument

Her er et eksempel, der bruger et JSON-dokument med en dybde på 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);

Resultat:

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

Nul-argumenter

Hvis argumentet er NULL , resultatet er NULL :

SELECT JSON_DEPTH(null);

Resultat:

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

Ugyldig JSON

Overførsel af ugyldig JSON resulterer i NULL med en advarsel:

SELECT JSON_DEPTH('{1}');

Resultat:

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

Lad os se advarslen:

SHOW WARNINGS;

Resultat:

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

Forkert parameterantal

Angivelse af ingen argumenter resulterer i en fejl:

SELECT JSON_DEPTH();

Resultat:

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

Det er det samme, når du giver for mange argumenter:

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

Resultat:

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

  1. Vigtigheden af ​​godt databasedesign (og 7 trin til at opnå det)

  2. PREVIEW:SentryOne Plan Explorer-udvidelse til Azure Data Studio

  3. Oracle 12.2.0.1 kommer i 2016

  4. Sådan opretter du en tabel med flere fremmednøgler og ikke bliver forvirret