MySQL会将Varchars视为绝对值吗?

时间:2014-11-03 02:34:07

标签: mysql varchar

我有一个表,其中一列是数据类型varchar。以下是一些值:

-.001
-.010
-7.13

当我按降序排序时,它给了我这个:

-7.13
-.010
-.01

这是向后的,但是如果你取数字的绝对值则是正确的。同样,如果我对这些数字的最大值运行查询,它会给我-7.13。

那是MySQL为varchar做的吗?

(P.S。我在Mac上使用Sequel Pro,有时会有一些有趣的设置。这可能是原因吗?)

1 个答案:

答案 0 :(得分:2)

没有。变量按字母顺序排序,对于单个字符,它们对应于ASCII编码。在ASCII编码中(见here),句点为“46”,小于0,即“48”。

换句话说,您的值只是按照角色所说的顺序排序。

如果您想要数字排序,则可以使用+ 0进行静默转换为数字(“静音”表示忽略错误)。那就是:

order by col + 0 desc