2012-07-12 93 views
2

這個人是不是在MySQL sinmple範圍有點複雜, 我場的數據是{"id":"15","value":"1200"},我可以找到它,Mysql的過濾JSON數據值範圍

SELECT * 
FROM `my_table` 
WHERE `my_field` 
REGEXP '{"id":"15","value":"1200"}' 

,但我需要的是該值的範圍

所以我需要尋找1000> 2000和json值1200的字段之間的範圍應該匹配。 我不能用PHP重做輸出,因爲它會吃掉資源,所以請如果有可能在Mysql內部沒有我處理數據trough返回

任何幫助表示讚賞!

解決方案給任何人!

LC給了我們非常好的解決方案

REGEXP '{"id":"15","value":"(1[0-9][0-9][0-9]|2000)"}' 

回答

4

我下意識的反應是說「停在一列中存儲多個值」,但如果你做這樣,你有正則表達式的功率,使用它(未經):

SELECT * 
FROM `my_table` 
WHERE `my_field` REGEXP '{"id":"15","value":"(1[0-9][0-9][0-9]|2000)"}' 

請記住,有沒有辦法來優化這個查詢使用索引,所以你被卡住檢查過y排在my_table

+0

即時通知獲取錯誤'重複運算符操作數無效'從正則表達式 – Benn 2012-07-12 18:14:56

+0

明白了!需要點。前面 ? – Benn 2012-07-12 18:16:52

+0

真棒謝謝你! – Benn 2012-07-12 18:17:14