通过mysql json中的值删除数组元素

大卫542

是否可以通过mysql中的json数组中的值(而不是其索引)删除元素?例如:

# ['new', 'orange']
update waitinglist SET new = JSON_REMOVE("orange", '$') WHERE id=2;
# now it will be ['new']

如果没有,是否有更好的方法来存储它,因此我可以根据需要删除元素?而且,阵列中永远不会有重复项。

缺口

如果您知道数组中绝不存在重复项,则可以使用JSON_SEARCH查找要删除的值的路径,然后使用JSON_REMOVE来删除它。请注意,您需要检查是否JSON_SEARCH确实找到了一个值,否则JSON_REMOVE将使整个字段无效:

UPDATE waitinglist 
SET new = JSON_REMOVE(new, JSON_UNQUOTE(JSON_SEARCH(new, 'one', 'orange')))
WHERE JSON_SEARCH(new, 'one', 'orange') IS NOT NULL

在dbfiddle上做了一个小演示

请注意,您必须使用JSON_UNQUOTE来自的响应JSON_SEARCH才能使其成为的有效路径JSON_REMOVE

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章