0

我有一个具有 VARCHAR 列的 MySQL 表。该列仅包含数字,我希望能够对其进行数字排序,即 100、101、1001。目前它将它们排序为 100、1001、101 等。我听说我可以简单地更改表格以添加整理属性,所以它将按数字排序。当我键入“显示排序规则”时,我看不到任何似乎用于将 varchar 列视为数字列的排序规则类型。

所以我的问题是,我可以使用什么排序规则来对这个 varchar 列进行数字排序?

4

2 回答 2

2

如果该varchar列只包含数字,那么它应该是一个整数列。否则,你可以做

ORDER BY CAST(col AS SIGNED) 

查看演示

于 2013-04-18T19:18:46.460 回答
0

没有内置的排序规则可以将数值作为数字进行比较。

您可以开发自己的,但是,您将很难将其部署在共享主机和类似的东西上。

如果您可以不使用索引进行排序,您可以将其转换为整数:

SELECT  *
FROM    mytable
ORDER BY
        CASE field REGEXP '^-?[0-9]$' THEN CAST(field AS SIGNED INTEGER) END
于 2013-04-18T19:25:53.433 回答