[mysql]在使用比较运算符的问题

标签: sql MySQL
发布时间: 2017/1/9 21:45:09
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有一条 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')

生产所需的结果。 我感到有点困惑与这些查询的工作。任何人可以帮我吗?

解决方法 1:

据推测, scalable 被存储为一个字符串。 比较用单引号将值转换为字符串,所以它们不数值排序。 作为字符串 '850' > '1200' 所以没有满足的条件。

您可以通过删除单引号来解决。 也希望您可以显式地转换为数字的值。 我常常只是添加 0 为此目的︰

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