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