带有JSON数组的

时间:2017-11-20 13:01:39

标签: mysql json regex

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

1 个答案:

答案 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生成更容易搜索的内容。即使是包含逗号分隔列表的字段也会更好。