共计 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 字符串的结果集,其中每行都包含一个由 id
、name
、age
、city
字段构成的 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
正文完