我在数据库中有表格,如下所示
id | range | price
1 | 11.00-11.99 | 2.78
2 | 12.00-12.99 | 3.65
3 | 13.00-13.99 | 2.90
4 | 14.00-14.99 | 1.56
我必须在13.65
列中搜索值range
。有没有办法直接在mysql查询中搜索
提前致谢
答案 0 :(得分:0)
使用substring_index
分隔范围并在between
子句中使用它。
您也可以使用between left(range,5) and right(range,5)
,这可能会更快。自己测试一下。
select * from your_table
where 13.65 between
SUBSTRING_INDEX(`range`,'-',1)
and SUBSTRING_INDEX(`range`,'-',-1);
SUBSTRING_INDEX(range,'-',1)
会在第一个-
和
注意:正如其他人在评论中所建议的那样,您应该考虑重新设计表格结构,但如果不可行,则应在range
列上为left
和{{1}创建索引} right
。我会告诉你如何做到这一点,但这将显着提高查询的性能。