使用collat​​e将varchar列排序为数字列

时间:2013-04-18 19:13:30

标签: mysql sorting collate

我有一个具有VARCHAR列的MySQL表。该列仅包含数字,我希望能够以数字方式对其进行排序,即100,101,1001。目前它将它们分类为100,1001,1101等。我听说我可以简单地改变表格来添加整理属性它将按数字排序。当我输入“show collat​​ion”时,我看不到任何似乎用于将varchar列视为数字列的collat​​ion类型。

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

2 个答案:

答案 0 :(得分:2)

如果此varchar列仅包含数字,则它应为整数列。否则,你可以做

ORDER BY CAST(col AS SIGNED) 

See the demo

答案 1 :(得分:0)

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

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

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

SELECT  *
FROM    mytable
ORDER BY
        CASE field REGEXP '^-?[0-9]$' THEN CAST(field AS SIGNED INTEGER) END