繁体   English   中英

带有JSON数组的MYSQL REGEXP

[英]MYSQL REGEXP with JSON array

我有一个存储在数据库中的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不好! 有什么建议么?

我使用以下正则表达式在您的测试字符串上获取匹配项

\"language_display\":\[(:?\"[0-9]\"\,)*?\"3\"(:?\,\"[0-9]\")*?\]

https://regex101.com/是一个免费的在线正则表达式测试仪,它看起来很棒。 从小做大。

抱歉,它对您不起作用。 它必须在非贪婪的'*?'上失败 也许尝试不带“?”

看一下如何序列化此数据,并着眼于序列化语言显示字段。 如何在数据库表的列中存储列表

即使您想将想法付诸实践,也会像fvck一样慢。 更好地处理每一行一次并生成更容易通过sql搜索的内容。 甚至包含逗号分隔列表的字段也会更好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM