首页 > 解决方案 > mysql中的from和to范围

问题描述

目前我有这种查询

SELECT 
    part_number,
    part_name,
    attenuation_low_end,
    attenuation_high_end,
    optimum_fermentation_temp_f_low,
    optimum_fermentation_temp_f_high
FROM
    yeast_module 
WHERE 
    category = 3
AND
( 
    ( `attenuation_low_end` > '31' OR `attenuation_low_end` = '31' )
    
    AND 
    
    ( `attenuation_high_end` < '40' OR `attenuation_high_end` = '40' )
)

我试图获取范围为low to high endfrom的记录31 and maximum of 40

但它给我的回报是这样的 在此处输入图像描述

正如您所注意到的,它似乎不会将数据返回3140

我这样做对吗?

更新

在此处输入图像描述

我期待没有回报,因为 31-40 之间没有数据

标签: mysqlsqlstringwhere-clause

解决方案


您正在比较字符串,它执行字典比较而不是数字比较。您需要转换为数字。添加0到数字字符串是将其转换为数字的简单方法。

WHERE 0+attenuation_low_end >= 31 AND 0+attenuation_high_end <= 40

推荐阅读