查询数据库中指定字段中存储的json数据是否包含某个值

查询数据库中指定字段中存储的json数据是否包含某个值,第1张

正常来说,使用mysql的JSON_EXTRACT()处理函数就可以了,例如:

SELECT JSON_EXTRACT('{"id":"3"}', "$.id")

可以查询出id字段中包含id为3的,但是会有一个问题,当mysql的使用工具navicat版本过低时,不支持转码或者查询,会报错,这是需要在JSON_EXTRACT外面套一层JSON_UNQUOTE 即可正常使用,语句如下:

SELECT JSON_UNQUOTE(JSON_EXTRACT('{"id":"3"}', "$.id"))

正则匹配,把这个字段看成字符串类型的。类似这种写法:

SELECT DISTINCT tag, body FROM pages

WHERE (body REGEXP BINARY '"listeListeOuiNon":".*1.*"') AND NOT (body REGEXP BINARY '"listeListeOuiNon":"2"')

我也遇到过这个,数据库拿到这个数据是字符串,奇怪的是前后有两个对双引号,JSON.parse()转json就出错了。。我解决是用正则去掉前后的双引号,然后得到的就是存进去的字符串的样子了,然后在转json就成功了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6422393.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-21
下一篇 2023-03-21

发表评论

登录后才能评论

评论列表(0条)

保存