MariaDB JSON_QUERY() 函数的基础用法与实例

MariaDB JSON_QUERY() 函数提供了一种强大的方法来提取JSON文档中的对象或数组。

发布于

在 MariaDB 中处理 JSON 数据时,JSON_QUERY() 函数提供了一种强大的方法来提取 JSON 文档中的对象或数组。本文将详细介绍 JSON_QUERY() 函数的语法、参数、返回值,以及通过实例展示其在实际应用中的用法。

语法

JSON_QUERY() 函数的基本语法如下:

JSON_QUERY(json_doc, path)
  • json_doc 参数是一个 JSON 格式的字符串。
  • path 参数是一个 JSON 路径表达式,用于指定从 json_doc 中提取数据的路径。
  • 返回值是一个 JSON 片段或 NULL。如果指定路径的结果是一个对象或数组,则返回该 JSON 片段;如果路径不存在或结果是一个标量值,则返回 NULL

实例

提取对象

假设我们有一个包含嵌套对象的 JSON 文档,我们想要提取其中的一个对象。

SELECT JSON_QUERY('{"book": {"title": "数据库原理", "author": "张三"}}', '$.book') AS book_info;
+--------------------------------------------------+
| book_info                                        |
+--------------------------------------------------+
| {"title": "数据库原理", "author": "张三"}        |
+--------------------------------------------------+

提取数组

JSON_QUERY() 也可以用来提取数组。

SELECT JSON_QUERY('{"numbers": [1, 2, 3]}', '$.numbers') AS number_array;
+--------------+
| number_array |
+--------------+
| [1, 2, 3]    |
+--------------+

从表中查询并提取

首先,我们创建一个包含 JSON 数据的表,并插入一些数据。

CREATE TABLE json_table (id INT, data JSON);
INSERT INTO json_table VALUES (1, '{"name": "李四", "details": {"age": 28, "city": "北京"}}');

然后,我们查询并提取 details 对象。

SELECT JSON_QUERY(data, '$.details') FROM json_table WHERE id = 1;
+-------------------------------+
| JSON_QUERY(data, '$.details') |
+-------------------------------+
| {"age": 28, "city": "北京"}   |
+-------------------------------+

错误路径返回 NULL

当提供的路径不正确或路径指向的是一个标量值时,JSON_QUERY() 将返回 NULL

SELECT JSON_QUERY('{"name": "王五", "age": 35}', '$.nonexistent') AS result;
+--------+
| result |
+--------+
| NULL   |
+--------+

使用路径表达式

路径表达式可以非常灵活,例如提取嵌套数组中的元素。

SELECT JSON_QUERY('{"data": {"array": [1, [2, 3], 4]}}', '$.data.array[1]') AS sub_array;
+-----------+
| sub_array |
+-----------+
| [2, 3]    |
+-----------+

相关函数

  • JSON_VALUE(): 用于提取 JSON 文档中的标量值。
  • JSON_EXTRACT(): 用于提取 JSON 文档中的值,可以是对象、数组或标量。
  • JSON_SET(): 用于更新 JSON 文档中的值。

结论

JSON_QUERY() 函数是处理 JSON 数据时不可或缺的工具,它使得从复杂的 JSON 文档中提取对象和数组变得简单高效。通过本文的介绍和实例,我们可以看到 JSON_QUERY() 在数据提取方面的强大能力。无论是开发者还是数据库管理员,都应该掌握这个函数,以便在需要时能够快速准确地操作 JSON 数据。