MySQL语句 | 在MySQL中解析JSON或将表中字段值合并为JSON

10,666次阅读
没有评论

共计 1583 个字符,预计需要花费 4 分钟才能阅读完成。

MySQL 提供了一系列的 JSON 函数来处理 JSON 数据,包括从 JSON 字符串中提取值和将表中字段值合并为 JSON 等。

在 MySQL 中解析 JSON

可使用 JSON_EXTRACT 函数提取 JSON 字符串中指定字段的值,使用 JSON_UNQUOTE 函数去除提取的字符串值周围的引号,以得到原始的非引号包裹的值。

举个例子
假设你有一个包含 JSON 数据的表 my_table

CREATE TABLE my_table (
    id INT PRIMARY KEY,
    json_data JSON
);

INSERT INTO my_table (id, json_data) VALUES
(1, '{"name":"John","age": 25,"city":"New York"}'),
(2, '{"name":"Alice","age": 30,"city":"Los Angeles"}');

使用 JSON 函数从 json_data 字段中提取数据:


SELECT id, JSON_UNQUOTE(JSON_EXTRACT(json_data, '$.name')) AS name
FROM my_table;


SELECT id, JSON_EXTRACT(json_data, '$.age') AS age
FROM my_table;


SELECT id, JSON_UNQUOTE(JSON_EXTRACT(json_data, '$.city')) AS city
FROM my_table;

如果 MySQL 版本较新(MySQL 8.0 及以上),可使用 -> 运算符来进行 JSON 字段的访问:


SELECT id, json_data->'$.name' AS name
FROM my_table;


SELECT id, json_data->'$.age' AS age
FROM my_table;


SELECT id, json_data->'$.city' AS city
FROM my_table;

上面例子展示了如何从 JSON 字符串中提取值的基本方法,在实际应用中可按需结合其他 JSON 函数来执行更复杂的操作。

将表中字段值合并为 JSON

可使用 JSON_OBJECT 函数将查询到的字段值合并为 JSON 字符串。

举个例子
假设你有一个包含个人信息的表person

CREATE TABLE person (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    age INT,
    city VARCHAR(50)
);

INSERT INTO person (id, name, age, city) VALUES
(1, 'John', 25, 'New York'),
(2, 'Alice', 30, 'Los Angeles');

可使用 JSON_OBJECT 函数来将表中的字段转换为 JSON 字符串:


SELECT id, JSON_OBJECT('name', name, 'age', age, 'city', city) AS json_data
FROM person;

上述查询将返回一个包含 JSON 字符串的结果集,其中每行都包含一个由 idnameagecity 字段构成的 JSON 对象。

+----+---------------------------------------------+
| id | json_data                                   |
+----+---------------------------------------------+
|  1 | {"name": "John", "age": 25, "city": "New York"} |
|  2 | {"name": "Alice", "age": 30, "city": "Los Angeles"} |
+----+---------------------------------------------+

在实际应用中,可按需调整字段和 JSON 对象的构建方式。

原文地址: MySQL 语句 | 在 MySQL 中解析 JSON 或将表中字段值合并为 JSON

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于2024-09-30发表,共计1583字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)