mysql中以json字段某个值为查询条件

查询数据

1.有key的查询方式:

数据表中查找出包含:"php","mysql",二个关键字中任意若干个数据

image.png

where 条件为 
WHERE  JSON_CONTAINS(json_array("php","mysql"), kv->'$.keywords')

查询结果

image.png

数据格式二:

查找json字段id=2数据

使用 字段->'$.json属性'进行查询条件
WHERE kv->'$.id'=2

image.png


2.没key的查询方式:

数据为:

image.png

查询包含1002的记录

where条件为
WHERE  JSON_CONTAINS(items,'["1002"]') 
查包含多个值 
WHERE  JSON_CONTAINS(items,'["1002","1006"]')

查询结果

image.png


查询以msyql开头的

where条件为
WHERE JSON_SEARCH(kv, 'one', 'mysql%') IS NOT NULL
'one' 查找第一个符合条件的,'all'查找所有符合条件的



更新数据

例如想给 items 字段加一个1012,更新的条件是items字段已经包含 "1009" ,并且还没有 "1003" 的数据

UPDATE `tabname`
SET tags = JSON_MERGE(items, '["1012"]')
WHERE
JSON_SEARCH(items, 'one', '1003') IS NULL
AND
JSON_SEARCH(items, 'one', '1009') IS NOT NULL;


^