在列字段中搜索范围内的值

时间:2017-05-24 08:16:17

标签: mysql sql

我在数据库中有表格,如下所示

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查询中搜索

提前致谢

1 个答案:

答案 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。我会告诉你如何做到这一点,但这将显着提高查询的性能。