Mysql 使用比较运算符时的问题

Mysql 使用比较运算符时的问题,mysql,sql,Mysql,Sql,我有一个SQL语句,它看起来像: SELECT `scaleble` FROM `property_requirement` WHERE (`scaleble` > '850' AND `scaleble` < '1200' ) 及 务必产生所需的结果。 我对这些查询的工作有点困惑。有人能帮我吗?大概,scalable是以字符串的形式存储的。使用单引号进行比较会将值转换为字符串,因此它们不会按数字顺序排列。由于字符串“850”大于“1200”,因此没有任何内容满足该条件 您可以通过

我有一个SQL语句,它看起来像:

SELECT `scaleble` FROM `property_requirement` WHERE (`scaleble` > '850' AND `scaleble` < '1200' )

务必产生所需的结果。 我对这些查询的工作有点困惑。有人能帮我吗?

大概,scalable是以字符串的形式存储的。使用单引号进行比较会将值转换为字符串,因此它们不会按数字顺序排列。由于字符串“850”大于“1200”,因此没有任何内容满足该条件

您可以通过删除单引号来修复此问题。我还鼓励您显式地将值转换为数字。为此,我通常只添加0:

SELECT `scaleble`
FROM `property_requirement`
WHERE (`scaleble` + 0 > 850 AND `scaleble` + 0 < 1200 );

你错了,请检查一下

上述查询将只返回下一个更高值的记录。下面的查询将返回所有更高的记录

SELECT `scaleble` FROM `property_requirement` WHERE (`scaleble` > 850)

在fiddle中比较这两个查询

我认为在SQL查询中不应该在整数周围加引号。scaleble是什么类型的?它是varchar255@Tushki检查我发布的答案,它将为每个查询返回不同的记录。但是为什么每个查询都能工作呢?这也是以预期的方式。但是在我的例子中,我也从前面的查询中得到了多个值,但是是的,计数是不同的。
SELECT `scaleble` FROM `property_requirement` WHERE (`scaleble` < '1200')
SELECT `scaleble`
FROM `property_requirement`
WHERE (`scaleble` + 0 > 850 AND `scaleble` + 0 < 1200 );
SELECT `scaleble` FROM `property_requirement` WHERE (`scaleble` > '850')
SELECT `scaleble` FROM `property_requirement` WHERE (`scaleble` > 850)