Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个具有 VARCHAR 列的 MySQL 表。该列仅包含数字,我希望能够对其进行数字排序,即 100、101、1001。目前它将它们排序为 100、1001、101 等。我听说我可以简单地更改表格以添加整理属性,所以它将按数字排序。当我键入“显示排序规则”时,我看不到任何似乎用于将 varchar 列视为数字列的排序规则类型。
所以我的问题是,我可以使用什么排序规则来对这个 varchar 列进行数字排序?
如果该varchar列只包含数字,那么它应该是一个整数列。否则,你可以做
varchar
ORDER BY CAST(col AS SIGNED)
查看演示
没有内置的排序规则可以将数值作为数字进行比较。
您可以开发自己的,但是,您将很难将其部署在共享主机和类似的东西上。
如果您可以不使用索引进行排序,您可以将其转换为整数:
SELECT * FROM mytable ORDER BY CASE field REGEXP '^-?[0-9]$' THEN CAST(field AS SIGNED INTEGER) END