【问题标题】:Sorting a varchar column as a numeric one using collate使用 collat​​e 将 varchar 列排序为数字列
【发布时间】:2013-04-18 19:13:29
【问题描述】:

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

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

【问题讨论】:

    标签: mysql sorting collate


    【解决方案1】:

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

    ORDER BY CAST(col AS SIGNED) 
    

    See the demo

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-27
        • 1970-01-01
        • 2012-01-20
        • 2016-01-30
        • 1970-01-01
        相关资源
        最近更新 更多