这是查询
从表中选择 *,其中 ID = '7883c2c8e6' 且值> '45' DESC
但由于某种原因,它返回一行,其中字段值的值为 8。我已经检查过,它没有前后字符。该字段当前设置为 varchar。我想知道这是否会影响结果?
如果我更改>的方向以<此行不会出现,但肯定应该相反吗?>
因为"8"大于"45"(按字母顺序排列)。
将值转换为 int:
AND convert( value, unsigned) > 45
The field is currently set as varchar
这就是问题所在;如果你在文本字段上使用比较运算符,它将按字母顺序而不是按数字对结果进行排序。
若要绕过它,请将字段设置为整数。
SELECT * FROM TABLE
WHERE id = '7883c2c8e6' AND (value * 1) > 45
order by value DESC