[MYSQL]删除JSON数组中特定数字

这问题折腾了我一下午,首先是mysql中没有现成的方法来寻找数组中数字的位置,然后是谷歌百度bing用中文和英文搜索都没找到可用又不烂的办法,爆栈网有一个高票答案,但是似乎并不对,JSON_SEARCH只能用来搜索字符串在json中的位置,数字不支持,不知道他是怎么得到结果的。

经过我晚上的继续摸索,翻遍了官方所有json相关的文档,终于让我拼出了一个方案,就是用 JSON_TABLE 先把数组转成表,然后用where剔除里面不要的数字,再用 JSON_ARRAYAGG 转回json数组,以下是示例代码

这样就可以得到结果 [1, 2, 8, 9] ,5被删掉了。

这个方法虽然并不优雅,但也没办法,谁叫MySQL连在数组里找数字的位置都做不到呢。

需要注意 JSON_TABLE 是MySQL 8.0.4版本才开始有的, JSON_ARRAYAGG 是MySQL 8.0.14才有的,所以老版本无法使用此方法。不过现在应该不会还有人在用MySQL 5.x吧,不会吧不会吧不会吧。



本文发布于 https://luojia.me

本站文章未经文下加注授权不得拷贝发布。

本博客使用Disqus评论系统,如果看不到评论框,请尝试爬墙。