SQL - ORDER BY无法正常工作?

时间:2013-07-20 13:15:15

标签: sql

SELECT test_column FROM test_table ORDER BY test_column给了我这个:

1   
12  
123  
2  
3

为什么不:

1
2
3
12
123  

@JosephPla你明白了,谢谢。如何对数字等字符串进行排序?

4 个答案:

答案 0 :(得分:13)

尝试

SELECT test_column 
FROM test_table 
ORDER BY cast(test_column as int)

但您应该考虑将列类型更改为正确的列类型。

答案 1 :(得分:4)

这项工作让我: -

ORDER BY cast(test_column as SIGNED)

答案 2 :(得分:2)

排序正常。这是一种词典排序(按字母顺序排列)。看来该列有一个text(char,varchar,...)类型,所以你得到的顺序是文本而不是数字。

如果要进行数字排序,请使用数字列类型(例如int)。 (或适当地施放柱子。)

答案 3 :(得分:2)

检查列的类型是否为varchar或类似的类型。看起来它是按字符串值排序,而不是按数值排序。如果列只包含数字,则最好是int类型。