SQL ORDER字符数字

T.T*_*.T. 38 sql numerical type-conversion sql-order-by char

我有一列数字存储为字符.当我为此列执行ORDER BY时,我得到以下内容:

100
131
200
21
30
31000

我如何以数字方式订购这些字符?我需要转换某些内容还是已经有SQL命令或函数?

谢谢.

Ray*_*yat 75

试试这个:

ORDER BY CAST(thecolumn AS int)
Run Code Online (Sandbox Code Playgroud)

  • 如果列值不是数字,则会失败 (4认同)
  • 如果有任何空值,可能想要包括ISNULL(列,0). (3认同)

Nev*_*Nev 24

这对我有用:

ORDER BY ABS(column_name)
Run Code Online (Sandbox Code Playgroud)

  • 这个解决方案是有问题的,因为它取数字的绝对值.因此,负值的排序可能不是您想要的. (3认同)

小智 11

在某些情况下,这可能是一个很好的匹配:

ORDER BY LENGTH(column_name), column_name
Run Code Online (Sandbox Code Playgroud)

特别是如果您有一列全部是数字或字母和数字混合但长度相同的情况。