MariaDB JSON_EXTRACT() 函数使用指南

在 MariaDB 中,JSON_EXTRACT() 是一个内置函数,它根据给定的一个或多个路径从 JSON 文档中提取数据。

MariaDB JSON_EXTRACT() 语法

这里是 MariaDB JSON_EXTRACT() 的语法:

JSON_EXTRACT(json_doc, path, ...)

参数

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

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

返回值

MariaDB JSON_EXTRACT() 函数返回 JSON 文档中由路径表达式匹配的所有的值。如果路径表达式匹配了一个值,则返回该值,如果路径表达式匹配了多个值,则返回一个包含了所有值的数组。

如果存在以下的情况, JSON_EXTRACT() 函数将返回 NULL

  • 如果 JSON 文档中不存在指定的路径。
  • 如果任意一个参数为 NULL

MariaDB JSON_EXTRACT() 示例

这里列出了几个常见的 MariaDB JSON_EXTRACT() 用法示例。

示例: 数组

下面的语句展示了如何使用 MariaDB JSON_EXTRACT() 函数从 JSON 数组中提取一个元素:

SELECT JSON_EXTRACT('[1, 2, {"x": 3}]', '$[2]');

输出:

+------------------------------------------+
| JSON_EXTRACT('[1, 2, {"x": 3}]', '$[2]') |
+------------------------------------------+
| {"x": 3}                                 |
+------------------------------------------+

让我们再看一个带有多个路径参数的例子:

SELECT JSON_EXTRACT('[1, 2, {"x": 3}]', '$[2].x', '$[1]', '$[0]');

输出:

+------------------------------------------------------------+
| JSON_EXTRACT('[1, 2, {"x": 3}]', '$[2].x', '$[1]', '$[0]') |
+------------------------------------------------------------+
| [1, 2, 3]                                                  |
+------------------------------------------------------------+

示例: 对象

下面的语句展示了如何使用 MariaDB JSON_EXTRACT() 函数从 JSON 对象中提取一个节点的值:

SELECT JSON_EXTRACT('{"x": 1, "y": [1, 2]}', '$.y');

输出:

+----------------------------------------------+
| JSON_EXTRACT('{"x": 1, "y": [1, 2]}', '$.y') |
+----------------------------------------------+
| [1, 2]                                       |
+----------------------------------------------+

让我们再看一个带有多个路径参数的例子:

SELECT JSON_EXTRACT('{"x": 1, "y": [1, 2]}', '$.x', '$.y');

输出:

+-----------------------------------------------------+
| JSON_EXTRACT('{"x": 1, "y": [1, 2]}', '$.x', '$.y') |
+-----------------------------------------------------+
| [1, [1, 2]]                                         |
+-----------------------------------------------------+

不存在的路径

如果 JSON 文档中不存在所有指定的路径, JSON_EXTRACT() 函数将返回 NULL

SELECT JSON_EXTRACT('[1, 2]', '$[5]');

输出:

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

结论

在 MariaDB 中,JSON_EXTRACT() 是一个内置函数,它根据给定的一个或多个路径从 JSON 文档中提取数据。