[英]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.