mysql 解析 json
时间: 2024-12-09 09:13:55 浏览: 47
MySQL 解析 JSON 是一种常见的需求,特别是在处理非结构化数据时。MySQL 从 5.7 版本开始引入了对 JSON 数据类型的支持,使得在数据库中存储和查询 JSON 数据变得更加方便。以下是一些常见的 JSON 操作和函数:
### 1. 存储 JSON 数据
你可以将 JSON 数据存储在 `JSON` 数据类型的列中:
```sql
CREATE TABLE user (
id INT AUTO_INCREMENT PRIMARY KEY,
data JSON
);
INSERT INTO user (data) VALUES ('{"name": "Alice", "age": 30, "email": "[email protected]"}');
```
### 2. 查询 JSON 数据
使用 `->` 和 `->>` 操作符可以提取 JSON 数据:
```sql
SELECT data->'$.name' AS name, data->'$.age' AS age FROM user;
```
### 3. 修改 JSON 数据
使用 `JSON_SET`, `JSON_INSERT`, `JSON_REPLACE` 等函数可以修改 JSON 数据:
```sql
UPDATE user
SET data = JSON_SET(data, '$.age', 31, '$.email', '[email protected]')
WHERE id = 1;
```
### 4. 过滤 JSON 数据
使用 `JSON_CONTAINS` 函数可以过滤包含特定 JSON 数据的行:
```sql
SELECT * FROM user
WHERE JSON_CONTAINS(data, '{"age": 30}', '$');
```
### 5. JSON 函数
MySQL 提供了许多 JSON 函数,如 `JSON_EXTRACT`, `JSON_ARRAY`, `JSON_OBJECT` 等:
```sql
SELECT JSON_EXTRACT(data, '$.name') AS name FROM user;
```
### 6. 索引 JSON 数据
为了提高查询性能,可以为 JSON 数据创建虚拟列并为其创建索引:
```sql
ALTER TABLE user
ADD COLUMN name VARCHAR(100) GENERATED ALWAYS AS (data->'$.name') STORED;
CREATE INDEX idx_name ON user(name);
```
通过这些操作和函数,你可以方便地在 MySQL 中存储、查询和修改 JSON 数据。
阅读全文
相关推荐















