SELECT test_column FROM test_table ORDER BY test_column
给了我这个:
1
12
123
2
3
为什么不:
1
2
3
12
123
@JosephPla你明白了,谢谢。如何对数字等字符串进行排序?
答案 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类型。