0

这是查询

从表中选择 *,其中 id = '7883c2c8e6' AND value > '45' DESC

但由于某种原因,它返回了字段值为 8 的行。我已经检查过,它没有前面或后面的字符。该字段当前设置为 varchar。我想知道这是否会影响结果?

如果我将 > 的方向更改为 < 这行不会显示,但肯定应该是相反的吗?

4

3 回答 3

2

因为“8”大于“45”(按字母顺序)。

您的值转换为 int:

AND convert( value, unsigned) > 45
于 2012-08-07T18:37:48.980 回答
1

The field is currently set as varchar

这就是问题所在;如果您在文本字段上使用比较运算符,它将按字母顺序而不是数字顺序对结果进行排序。

要绕过它,请将字段设置为整数。

于 2012-08-07T18:38:13.617 回答
0
SELECT * FROM TABLE 
WHERE id = '7883c2c8e6' AND (value * 1) > 45
order by value DESC
于 2012-08-07T18:37:50.910 回答