当前位置:   article > 正文

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

mysql 合并json

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"}');
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

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

-- 提取name字段的值
SELECT id, JSON_UNQUOTE(JSON_EXTRACT(json_data, '$.name')) AS name
FROM my_table;

-- 提取age字段的值
SELECT id, JSON_EXTRACT(json_data, '$.age') AS age
FROM my_table;

-- 提取city字段的值
SELECT id, JSON_UNQUOTE(JSON_EXTRACT(json_data, '$.city')) AS city
FROM my_table;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

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

-- 提取name字段的值
SELECT id, json_data->'$.name' AS name
FROM my_table;

-- 提取age字段的值
SELECT id, json_data->'$.age' AS age
FROM my_table;

-- 提取city字段的值
SELECT id, json_data->'$.city' AS city
FROM my_table;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

上面例子展示了如何从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');
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

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

-- 将id、name、age、city字段合并为JSON字符串
SELECT id, JSON_OBJECT('name', name, 'age', age, 'city', city) AS json_data
FROM person;
  • 1
  • 2
  • 3

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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/396112
推荐阅读
相关标签
  

闽ICP备14008679号