我有一个存储在数据库中的JSON字符串,我需要基于JSON字符串中的WHERE条件的SQL COUNT。我需要它来处理MYSQL 5.5。
我找到并且可以使用的唯一解决方案是在SQL查询中使用REGEXP函数。
以下是存储在 custom_data 列中的JSON字符串:
{"language_display":["1","2","3"],"quantity":1500,"meta_display:":["1","2","3"]}
https://regex101.com/r/G8gfzj/1
我现在需要创建一个SQL语句:
SELECT COUNT(..) WHERE custom_data REGEXP '[HELP_HERE]'
我寻找的条件是 language_display 必须是1,2或3 ......或者我在创建SQL语句时定义的任何值。
到目前为止,我带着REGEX表达式来到这里,但它不起作用:
(?:\"language_display\":\[(?:"1")\])
将1替换为我要查找的值。我一般也可以看一下" 1" (带引号),但也会在meta_display数组中找到,它将具有不同的值。
我对REGEX并不擅长!有什么建议吗?
答案 0 :(得分:0)
我使用以下正则表达式来获取测试字符串
的匹配项\"language_display\":\[(:?\"[0-9]\"\,)*?\"3\"(:?\,\"[0-9]\")*?\]
https://regex101.com/是一个免费的在线正则表达式测试程序,它看起来效果很好。从小做起,努力工作。
对不起,它不适合你。它一定是在非贪婪的失败' *?'也许没有'?'
了解如何序列化这些数据,着眼于序列化语言显示字段。 How to store a list in a column of a database table
即使你让自己的想法得以实现,它也会像fvck那样缓慢。最好一次处理每一行,并通过sql生成更容易搜索的内容。即使是包含逗号分隔列表的字段也会更好。