MySQL之GET_JSON_OBJECT函数

发布于:2025-05-16 ⋅ 阅读:(18) ⋅ 点赞:(0)


GET_JSON_OBJECTMySQL 中用于从 JSON 字符串中提取特定数据的函数。以下是其详细介绍及示例:

语法:GET_JSON_OBJECT(json_doc, path)

  • json_doc:要解析的 JSON 格式的字符串。
  • path:使用 JSONPath 语法指定要提取的 JSON 数据的路径。

示例

提取简单 JSON 对象的属性值

SELECT GET_JSON_OBJECT('{"name": "Alice", "age": 30}', '$.name');

结果为:Alice。这里从一个简单的 JSON 对象中通过 $.name 路径获取了名为 name 的属性值。

SELECT GET_JSON_OBJECT('"Hello World"', '$');  -- 返回 "Hello World"

提取嵌套 JSON 对象的属性值

SELECT GET_JSON_OBJECT('{"person": {"name": "Alice", "address": {"city": "New York"}}}', '$.person.address.city');

结果为:New York。通过 $.person.address.city 路径,从嵌套的 JSON 对象中获取了 city 的值。

提取 JSON 数组中的元素

SELECT GET_JSON_OBJECT('{"students": [{"name": "Alice", "grade": 8}, {"name": "Bob", "grade": 9}]}', '$.students[0].name');

结果为:Alice$.students[0].name 表示获取 students 数组中第一个元素的 name 属性值。

-- 原始 JSON: ["apple", "banana", "cherry"]
SELECT GET_JSON_OBJECT('["apple", "banana", "cherry"]', '$[0]');  -- 返回 "apple"
SELECT GET_JSON_OBJECT('["apple", "banana", "cherry"]', '$[2]');  -- 返回 "cherry"

结合查询使用

假设有一个名为 users 的表,其中有一个 info 列存储 JSON 格式的数据,如下所示:

CREATE TABLE users (
    id INT PRIMARY KEY,
    info JSON
);

INSERT INTO users (id, info) VALUES
    (1, '{"name": "Alice", "age": 30, "hobbies": ["reading", "painting"]}'),
    (2, '{"name": "Bob", "age": 25, "hobbies": ["sports", "music"]}');

可以使用 GET_JSON_OBJECT 函数在查询中提取 JSON 数据:

SELECT id, GET_JSON_OBJECT(info, '$.name') AS name, GET_JSON_OBJECT(info, '$.age') AS age
FROM users;

该查询会从 info 列的 JSON 数据中提取出 nameage 属性值,并与 id 一起展示。

处理不存在的路径

如果指定的 JSONPathJSON 文档中不存在,GET_JSON_OBJECT 函数将返回 NULL。例如:

SELECT GET_JSON_OBJECT('{"name": "Alice", "age": 30}', '$.address.city');

结果为 NULL,因为 JSON 文档中不存在 address.city 这个路径。


网站公告

今日签到

点亮在社区的每一天
去签到