Mysql 5.7版本以上 对JSON类型的一些操作函数整理

--字符串转JSON
cast(字符串 as JSON)
例子:
cast('{"aa":"dd"}' as JSON)
cast('[{"aa":"dd"},{"cc":"dd"}]' as JSON)

--查询JSON字段中的某个属性
方法一:
select json字段名 -> '$.属性名' from 表名 where 查询条件
例子:
SELECT field -> '$.param' FROM table t WHERE condition

方法二:
select JSON_EXTRACT(字段名,'$[0].属性名') from 表名 where 查询条件
例子:
SELECT JSON_EXTRACT(field,'$[0].param') from table where condition


--新增JSON字段中的某个属性
UPDATE 表名 SET 字段名 = JSON_SET(字段名,'$.属性名',cast(新增的字符串 as JSON)) where 查询条件
例子:
UPDATE table SET field = JSON_SET(field,'$.param',cast('{"aa":"vv"}' as JSON)) WHERE condition

--新增在JSON字段的数组后面添加数据
UPDATE 表名 SET 字段名 = JSON_ARRAY_APPEND(字段名,'$.属性名',cast(新增的字符串 as JSON)) where 查询条件
例子:
UPDATE table SET field = JSON_ARRAY_APPEND(field,'$.param',cast('{"aa":"vv"}' as JSON)) WHERE condition

--查看该属性是否存在 存在为1 不存在为0
SELECT JSON_CONTAINS_PATH(字段名,'all','$[0].属性名') FROM 表名
例子:
SELECT JSON_CONTAINS_PATH(field,'all','$[0].param') FROM table

--删除JSON字段的某个属性
UPDATE 表名 SET 字段名 = JSON_REMOVE(字段名,'$.属性名') where 查询条件
例子:
UPDATE table SET field = JSON_REMOVE(field,'$.param') WHERE condition

--替代JSON字段的某个属性的全部的值
UPDATE 表名 SET 字段名 = JSON_REPLACE(字段名,'$.属性名',cast(新增的字符串 as JSON)) where 查询条件
例子:
UPDATE table SET field = JSON_REPLACE(field,'$.param',cast('{"aa":"vv"}' as JSON)) WHERE condition

你可能感兴趣的:(数据库)