删除json里面的数组数据,可以用以下的sql操作。
UPDATE A
SET B= JSON_REMOVE(
B, REPLACE(json_search(B, 'one', 1), '"', '') )
WHERE A_id = 1 AND json_search(B, 'one', 1) IS NOT NULL ;
但是用这种操作会有删除后出现{},这种情况,现在我还找不到具体办法去除,只能拿出来后处理下数据重新插入。希望有知道的大佬告知一下,谢谢各位大佬。
更新json里面的数组数据的话,可以用这个sql来操作;
UPDATE A
SET B = JSON_ARRAY_APPEND(B,'$.C.tag', CAST('{"id":"4"}' AS JSON) )
WHERE B = 1;
json的格式是:
{"C": {"tag": [{"id": "1"}, {"id": "4"}]}}
在sql里面添加CAST(‘value’ AS JSON)可以去除字符串的转义问题,
使用 CAST(... AS JSON)
or 强制转换为正确的类型JSON_OBJECT()
查找json里面的某个值
SELECT JSON_EXTRACT(B, '$.C.tag')
AS B FROM A WHERE A_id = 1
后续:已经找到json删除出现删除不完全还剩下{}的解决方法了,用下面的sql就可以解决。
UPDATE A SET B= IFNULL( JSON_REMOVE( B, JSON_UNQUOTE(
REPLACE( JSON_SEARCH(B, 'all', '1', NULL, '$**.tag'), '.id', '' ) ) ),
B) WHERE A_id = 1;
终于找到办法了。。。