MariaDB JSON_DEPTH() 函数使用指南
在 MariaDB 中,JSON_DEPTH() 是一个内置函数,它返回一个给定 JSON 文档的最大深度。
MariaDB JSON_DEPTH() 语法
这里是 MariaDB JSON_DEPTH() 的语法:
JSON_DEPTH(json)
参数
json- 必需的。一个 JSON 文档。
如果您提供了错误数量的参数,MariaDB 将报告一个错误: ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_DEPTH'。
返回值
MariaDB JSON_DEPTH() 函数返回一个 JSON 文档的最大深度。JSON_DEPTH() 函数按如下规则计算 JSON 文档的深度:
- 一个空的数组、空的对象或者纯值的深度是 1。
- 一个仅包含深度为 1 的元素的数组的深度是 2。
- 一个所有成员的值的深度为 1 的对象的深度是 2。
- 除此之外的其他 JSON 文档的深度都大于 2.
如果参数为 NULL,此函数将返回 NULL。
如果参数为一个无效的 JSON,此函数将返回 NULL。
MariaDB JSON_DEPTH() 示例
这里列出了几个常见的 JSON_DEPTH() 用法示例。
JSON 数组
SELECT JSON_DEPTH('[]'), JSON_DEPTH('[1, 2]'), JSON_DEPTH('[1, [2, 3]]');
输出:
+------------------+----------------------+---------------------------+
| JSON_DEPTH('[]') | JSON_DEPTH('[1, 2]') | JSON_DEPTH('[1, [2, 3]]') |
+------------------+----------------------+---------------------------+
| 1 | 2 | 3 |
+------------------+----------------------+---------------------------+JSON 对象
SELECT JSON_DEPTH('{}'), JSON_DEPTH('{"x": 1}'), JSON_DEPTH('{"x": {"y": 1}}');
输出:
+------------------+------------------------+-------------------------------+
| JSON_DEPTH('{}') | JSON_DEPTH('{"x": 1}') | JSON_DEPTH('{"x": {"y": 1}}') |
+------------------+------------------------+-------------------------------+
| 1 | 2 | 3 |
+------------------+------------------------+-------------------------------+标量值和空对象/数组
标量值或空数组或对象的深度为 1:
SELECT
JSON_DEPTH('{}'),
JSON_DEPTH('[]'),
JSON_DEPTH(1);
输出:
+------------------+------------------+---------------+
| JSON_DEPTH('{}') | JSON_DEPTH('[]') | JSON_DEPTH(1) |
+------------------+------------------+---------------+
| 1 | 1 | 1 |
+------------------+------------------+---------------+NULL 参数
如果参数为 NULL, MariaDB JSON_DEPTH 将返回 NULL:
SELECT JSON_DEPTH(NULL);
输出:
+------------------+
| JSON_DEPTH(NULL) |
+------------------+
| NULL |
+------------------+无效的 JSON
如果参数为一个无效的 JSON, MariaDB JSON_CONTAINS() 函数将返回 NULL,并且 MariaDB 将产生一个警告。
SELECT JSON_DEPTH('a');
输出:
+-----------------+
| JSON_DEPTH('a') |
+-----------------+
| NULL |
+-----------------+让我们看看警告:
SHOW WARNINGS;
输出:
+---------+------+--------------------------------------------------------------------------------+
| Level | Code | Message |
+---------+------+--------------------------------------------------------------------------------+
| Warning | 4038 | Syntax error in JSON text in argument 1 to function 'json_depth' at position 1 |
+---------+------+--------------------------------------------------------------------------------+结论
在 MariaDB 中,JSON_DEPTH() 是一个内置函数,它返回一个给定 JSON 文档的最大深度。