【笔记】MySQL直接操作JSON

前言

MySQL直接操作JSON

定义表字段类型为JSON

  • 8.x可以使用JSON类型,自带JSON格式校验
  • 5.x可以使用任意文本类型(如TEXT类型)保存JSON格式字符串
1
2
3
CREATE TABLE `table` (
data JSON
)

校验是否是合法JSON数据

1
SELECT JSON_VALID('{"key": "value"}');

创建JSON对象

1
SELECT JSON_OBJECT('key', 'value'); // {"key", "value"}

创建JSON数组

1
SELECT JSON_ARRAY('value1', 'value2'); // ["value1", "value2"]

根据键修改指定值

  • 通过JSON_SET修改JSON中指定键的值
1
UPDATE table SET data = JSON_SET(data, '$.key', 'new_value');

修改的新值也是JSON

  • 通过CAST()转换为JSON数据
1
UPDATE table SET data = JSON_SET(data, '$.key', CAST('{}' AS JSON));

根据键查询指定值

1
SELECT JSON_EXTRACT(data, '$.key');
1
SELECT JSON_EXTRACT(data, '$.key_1', '$.key_2');

完成