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'