MariaDB JSON_QUERY() 函数使用指南

在 MariaDB 中,JSON_QUERY() 是一个内置函数,它根据提供的路径从 JSON 文档返回对象或数组。

如果您需要从 JSON 文档中查询标量,请使用 JSON_VALUE()

MariaDB JSON_QUERY() 语法

这里是 MariaDB JSON_QUERY() 的语法:

JSON_QUERY(json_doc, path)

参数

json_doc
必需的。一个 JSON 文档。
path
必需的。您应该至少指定一个路径表达式。

如果您提供了错误数量的参数,MariaDB 将报告一个错误: ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_QUERY'

返回值

MariaDB JSON_QUERY() 函数根据提供的路径从 JSON 文档返回对象或数组。

如果 JSON 文档中给定的路径不是一个对象或者数组,JSON_QUERY() 将返回 NULL

如果给定的 JSON 无效,MariaDB JSON_QUERY() 函数将返回 NULL

如果任何参数为 NULL,MariaDB JSON_QUERY() 函数将返回 NULL

MariaDB JSON_QUERY() 示例

下面几个示例展示了 MariaDB JSON_QUERY() 函数的用法。

基本示例

SET @json_doc = '[1, 2, {"x": 3}]';
SELECT
  @json_doc AS 'Json',
  JSON_QUERY(@json_doc, '$') AS `$`,
  JSON_QUERY(@json_doc, '$[2]') AS `$[2]`;

输出:

+------------------+------------------+----------+
| Json             | $                | $[2]     |
+------------------+------------------+----------+
| [1, 2, {"x": 3}] | [1, 2, {"x": 3}] | {"x": 3} |
+------------------+------------------+----------+

如果您给的路径不是一个对象或者数组, MariaDB JSON_QUERY() 将返回 NULL

SET @json_doc = '[1, 2, {"x": 3}]';
SELECT
  @json_doc AS 'Json',
  JSON_QUERY(@json_doc, '$[0]') AS `$[0]`;

输出:

+------------------+------+
| Json             | $[0] |
+------------------+------+
| [1, 2, {"x": 3}] | NULL |
+------------------+------+

在本示例中,由于 $[0] 的值是 1,不是对象或者数组,因此他返回了 NULL

无效的 JSON

如果给定的 JSON 无效,MariaDB JSON_QUERY() 函数将返回 NULL

SELECT JSON_QUERY('a', '$[0]');

输出:

+-------------------------+
| JSON_QUERY('a', '$[0]') |
+-------------------------+
| NULL                    |
+-------------------------+

NULL 参数

如果任何参数为 NULL,MariaDB JSON_QUERY() 函数将返回 NULL

SELECT
    JSON_QUERY(NULL, '$'),
    JSON_QUERY('[1,2]', NULL);

输出:

+-----------------------+---------------------------+
| JSON_QUERY(NULL, '$') | JSON_QUERY('[1,2]', NULL) |
+-----------------------+---------------------------+
| NULL                  | NULL                      |
+-----------------------+---------------------------+

结论

在 MariaDB 中,JSON_QUERY() 是一个内置函数,它根据提供的路径从 JSON 文档返回对象或数组。