MariaDB JSON_EXISTS() 函数使用指南

在 MariaDB 中,JSON_EXISTS() 是一个内置函数,它用来检查给定的 JSON 文档中是否存在指定路径。

MariaDB JSON_EXISTS() 函数类似于 JSON_CONTAINS_PATH() 函数。

您还可以使用 JSON_CONTAINS() 函数检查一个 JSON 文档中是否存在一个值。

MariaDB JSON_EXISTS() 语法

这里是 MariaDB JSON_EXISTS() 的语法:

JSON_EXISTS(json_doc, one_or_all, path[, path])

参数

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

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

返回值

MariaDB JSON_EXISTS() 函数返回 1 或者 0 以指示给定的 JSON 文档中是否包含通过路径表达式给定的路径。

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

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

MariaDB JSON_EXISTS() 示例

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

数组

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

输出:

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

在本例中,

$[0]' 代表根数组的第 1 个元素。 $[3]' 代表根数组的第 4 个元素。 $[2].x 代表根数组的第 3 个元素中的 x 成员。

SELECT JSON_EXISTS('{ "name": "Wag" }', '$.type');

输出:

+--------------------------------------------+
| JSON_EXISTS('{ "name": "Wag" }', '$.type') |
+--------------------------------------------+
|                                          0 |
+--------------------------------------------+

对象

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

输出:

+--------------------+------+------+------+--------+--------+
| Json               | $.x  | $.y  | $.z  | $.y[0] | $.y[2] |
+--------------------+------+------+------+--------+--------+
| {"x":1, "y":[0,1]} |    1 |    1 |    0 |      1 |      0 |
+--------------------+------+------+------+--------+--------+

无效的 JSON

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

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

输出:

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

NULL 参数

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

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

输出:

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

结论

在 MariaDB 中,JSON_EXISTS() 是一个内置函数,它用来检查给定的 JSON 文档中是否存在指定路径。