sql >> Database >  >> RDS >> MariaDB

MariaDB JSON_DEPTH() uitgelegd

In MariaDB, JSON_DEPTH() is een ingebouwde functie waarmee u de diepte van een JSON-document kunt controleren.

Het accepteert het JSON-document als argument en geeft de maximale diepte van het document terug.

Syntaxis

De syntaxis gaat als volgt:

JSON_DEPTH(json_doc)

Waar json_doc is het JSON-document waarvoor de diepte moet worden geretourneerd.

Voorbeeld

Hier is een voorbeeld om te demonstreren.

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

Resultaat:

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

In dit geval is de diepte 2 .

Scalaire waarden en lege objecten/arrays

Scalaire waarden of lege arrays of objecten hebben een diepte van 1 :

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

Resultaat:

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

Dieper JSON-document

Hier is een voorbeeld dat een JSON-document gebruikt met een diepte van 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);

Resultaat:

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

Nullargumenten

Als het argument NULL is , het resultaat is NULL :

SELECT JSON_DEPTH(null);

Resultaat:

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

Ongeldige JSON

Het doorgeven van ongeldige JSON resulteert in NULL met een waarschuwing:

SELECT JSON_DEPTH('{1}');

Resultaat:

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

Laten we eens kijken naar de waarschuwing:

SHOW WARNINGS;

Resultaat:

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

Onjuist aantal parameters

Het verstrekken van geen argumenten resulteert in een fout:

SELECT JSON_DEPTH();

Resultaat:

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

Het is hetzelfde als je te veel argumenten geeft:

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

Resultaat:

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

  1. Gebruik sys.trigger_event_types om triggergebeurtenistypen in SQL Server weer te geven

  2. PostgreSQL VALUES-opdracht uitgelegd

  3. Laravel 5.2 - Gebruik een string als aangepaste primaire sleutel voor welsprekende tabel wordt 0

  4. Standaard numerieke notatietekenreeksen ondersteund door FORMAT() in SQL Server