mysql8.0 json操作 JSON_ARRAY_APPEND JSON_REMOVE

发布于:2022-08-08 ⋅ 阅读:(575) ⋅ 点赞:(0)

删除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;

终于找到办法了。。。


网站公告

今日签到

点亮在社区的每一天
去签到