【问题标题】:mySQL sorting ASCII as INT [duplicate]mySQL将ASCII排序为INT [重复]
【发布时间】:2016-09-18 07:11:53
【问题描述】:

在 SQL 表中有一个 client_num 列声明为 char(5)。当我通过client_numASC 对表格进行排序时,它将具有典型的ASCII 排序。

1  
10    
100   
11  
110 

如何将client_num 排序为INT,同时保持列的类型仍为char(5)

编辑

上面提到的SQL order string as number 有相当广泛的答案。这个问题很简单,并且有直接的答案。虽然它是重复的。但它对我的帮助很快。

【问题讨论】:

  • 试试.. ORDER BY client_num+0 .. ORDER BY CAST(client_num AS UNSIGNED)
  • 不起作用。 +0 应该怎么做?
  • MySQL 在添加零时将字符串转换为数字类型,如上所示。您也可以尝试第二个选项。
  • 好的 - 我要禁食。它是用于铸造的,而且效果很好!!!
  • 如果您发布 sep。回答我会接受的。

标签: mysql


【解决方案1】:

您可以将cast 列转换为整数:

SELECT   *
FROM     mytable
ORDER BY CAST(client_num AS INT) 

【讨论】:

  • 铸造是解决方案,是的。 UNSIGNEDINT 这里有什么区别?
  • INT 可以是 -ve,无符号不能
  • @Ben unsigned 只有非负数,而ints 可以是负数。
  • 好吧-愚蠢的问题。所以 mySQl 终于做了同样的演员。
  • 它可能关注的对象:CAST(client_num as INT) 会引发语法错误,而 CAST(client_num as UNSIGEND) 不会。那可能是mySQL版本的问题,不知道。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-12
  • 2016-07-08
  • 1970-01-01
  • 1970-01-01
  • 2017-04-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多