簡體   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