MariaDB JSON_DEPTH() Function
In MariaDB, JSON_DEPTH()
is a built-in function that returns the maximum depth of a given JSON document.
MariaDB JSON_DEPTH()
syntax
Here is the syntax for the MariaDB JSON_DEPTH()
function:
JSON_DEPTH(json)
Parameters
json
-
Required. A JSON document.
If you supply the wrong number of arguments, MariaDB will report an error: ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_DEPTH'
.
Return value
MariaDB JSON_DEPTH()
function returns the maximum depth of a JSON document. The JSON_DEPTH()
function calculates the depth of the JSON document according to the following rules:
- An empty array, empty object, or plain value has depth 1.
- An array containing only elements of depth 1 has depth 2.
- An object with depth 1 for all members has depth 2.
- The depth of other JSON documents is greater than 2.
This function will return NULL
if the argument is NULL
.
If the argument is an invalid JSON, this function will return NULL
.
MariaDB JSON_DEPTH()
Examples
Here are some common examples to show the usages of the Mariadb JSON_DEPTH()
function.
JSON array
SELECT JSON_DEPTH('[]'), JSON_DEPTH('[1, 2]'), JSON_DEPTH('[1, [2, 3]]');
Output:
+------------------+----------------------+---------------------------+
| JSON_DEPTH('[]') | JSON_DEPTH('[1, 2]') | JSON_DEPTH('[1, [2, 3]]') |
+------------------+----------------------+---------------------------+
| 1 | 2 | 3 |
+------------------+----------------------+---------------------------+
JSON object
SELECT JSON_DEPTH('{}'), JSON_DEPTH('{"x": 1}'), JSON_DEPTH('{"x": {"y": 1}}');
Output:
+------------------+------------------------+-------------------------------+
| JSON_DEPTH('{}') | JSON_DEPTH('{"x": 1}') | JSON_DEPTH('{"x": {"y": 1}}') |
+------------------+------------------------+-------------------------------+
| 1 | 2 | 3 |
+------------------+------------------------+-------------------------------+
Scalar values and empty objects/arrays
The depth of a scalar value or an empty array/object is 1
:
SELECT
JSON_DEPTH('{}'),
JSON_DEPTH('[]'),
JSON_DEPTH(1);
Output:
+------------------+------------------+---------------+
| JSON_DEPTH('{}') | JSON_DEPTH('[]') | JSON_DEPTH(1) |
+------------------+------------------+---------------+
| 1 | 1 | 1 |
+------------------+------------------+---------------+
NULL
parameters
MariaDB JSON_DEPTH will return NULL
if the argument is NULL
:
SELECT JSON_DEPTH(NULL);
Output:
+------------------+
| JSON_DEPTH(NULL) |
+------------------+
| NULL |
+------------------+
Invalid JSON
If the argument is an invalid JSON, the MariaDB JSON_CONTAINS()
function will return NULL
, and MariaDB will generate a warning.
SELECT JSON_DEPTH('a');
Output:
+-----------------+
| JSON_DEPTH('a') |
+-----------------+
| NULL |
+-----------------+
Let’s look at the warnings:
SHOW WARNINGS;
Output:
+---------+------+--------------------------------------------------------------------------------+
| Level | Code | Message |
+---------+------+--------------------------------------------------------------------------------+
| Warning | 4038 | Syntax error in JSON text in argument 1 to function 'json_depth' at position 1 |
+---------+------+--------------------------------------------------------------------------------+
Conclusion
In MariaDB, JSON_DEPTH()
is a built-in function that returns the maximum depth of a given JSON document.