2012-07-12 65 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