是否可以通过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] 删除。
我来说两句