如何在MySQL中从短横线分隔的列筛选指定范围的数据?
解决方案
你可以借助MySQL的字符串拆分函数和类型转换来实现这个筛选需求,具体实现方式如下:
- 用
SUBSTRING_INDEX拆分短横线分隔的内容:SUBSTRING_INDEX(目标列名, '-', 1)提取短横线左侧的字符串SUBSTRING_INDEX(目标列名, '-', -1)提取短横线右侧的字符串
- 通过
CAST将提取出的字符串转为数值类型(这里用DECIMAL(10,2),精度可根据你的数据实际情况调整) - 添加数值比较条件,筛选出左侧值大于X、右侧值小于Y的行
假设目标列名为range_col,替换成你实际的列名后,示例SQL语句如下:
SELECT * FROM example WHERE -- 先过滤格式不正确的行,避免非短横线分隔的数据导致转换报错 LOCATE('-', range_col) > 0 -- 左侧数值大于示例下限2.5 AND CAST(SUBSTRING_INDEX(range_col, '-', 1) AS DECIMAL(10,2)) > 2.5 -- 右侧数值小于示例上限7.2 AND CAST(SUBSTRING_INDEX(range_col, '-', -1) AS DECIMAL(10,2)) < 7.2;
实际使用时,直接把语句中的2.5和7.2替换成用户输入的X和Y即可。
内容的提问来源于stack exchange,提问作者user17225961
相关产品推荐
相关产品推荐

