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 文档的最大深度。