1. 插入JSON数据
INSERT INTO your_table (json_column) VALUES ('{"key": "value", "number": 456}');
2. 查询JSON字段
获取JSON字段的值
- 使用
->
操作符获取JSON对象的值(作为JSON格式返回)
SELECT json_column->"$.key" FROM your_table;
- 使用
->>
操作符获取JSON对象的值(作为文本返回)
SELECT json_column->>"$.key" FROM your_table;
提取JSON数组中的元素
SELECT json_column->"$.array[0]" FROM your_table; -- 获取数组的第一个元素
3. 修改JSON数据
MySQL没有直接的UPDATE
语句来修改JSON对象中的某个值,但你可以使用JSON_SET()
, JSON_REPLACE()
, JSON_INSERT()
, 和 JSON_REMOVE()
等函数来更新JSON列。
JSON_SET()
:插入或更新数据
UPDATE your_table
SET json_column = JSON_SET(json_column, '$.key', 'newValue')
WHERE condition;
JSON_REPLACE()
:只替换已存在的值
UPDATE your_table
SET json_column = JSON_REPLACE(json_column, '$.key', 'replacedValue')
WHERE condition;
JSON_INSERT()
:只插入不存在的值
UPDATE your_table
SET json_column = JSON_INSERT(json_column, '$.newKey', 'newValue')
WHERE condition;
JSON_REMOVE()
:从JSON文档中删除数据
UPDATE your_table
SET json_column = JSON_REMOVE(json_column, '$.keyToRemove')
WHERE condition;
4. 搜索JSON数据
- 使用
JSON_CONTAINS()
检查JSON文档是否包含特定值
SELECT * FROM your_table
WHERE JSON_CONTAINS(json_column, '"searchValue"', '$.path');
- 使用
JSON_SEARCH()
查找JSON文档中的路径
SELECT JSON_SEARCH(json_column, 'one', 'searchValue') FROM your_table;
5. JSON数组操作
- 使用
JSON_ARRAY()
创建JSON数组
SET @json_array = JSON_ARRAY('a', 1, NOW());
- 使用
JSON_APPEND()
向JSON数组添加元素
UPDATE your_table
SET json_column = JSON_APPEND(json_column, '$.array', 'newValue')
WHERE condition;