我有一个SQL语句,看起来像:
SELECT `scaleble` FROM `property_requirement` WHERE (`scaleble` > '850' AND `scaleble` < '1200' )
并且不会产生任何结果,而另一个SQL语句看起来像:
SELECT `scaleble` FROM `property_requirement` WHERE (`scaleble` > 850 AND `scaleble` < 1200 )
给出所需的结果。
但是,各个比较如下:
SELECT `scaleble` FROM `property_requirement` WHERE (`scaleble` > '850')
和
SELECT `scaleble` FROM `property_requirement` WHERE (`scaleble` < '1200')
确实产生了所需的结果。
我对这些查询的工作有些困惑。谁能帮我这个?
最佳答案
大概scalable
被存储为字符串。用单引号引起的比较将值转换为字符串,因此它们不是数字顺序的。作为字符串'850' > '1200'
,因此没有任何条件可以满足。
您可以通过删除单引号来解决此问题。我也鼓励您将值显式转换为数字。我经常为此添加0
:
SELECT `scaleble`
FROM `property_requirement`
WHERE (`scaleble` + 0 > 850 AND `scaleble` + 0 < 1200 );
关于mysql - 与比较运算符一起使用时的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24430857/