15

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

1
12
123
2
3

为什么不:

1
2
3
12
123

如何对数字等字符串进行排序?

4

4 回答 4

20

尝试

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

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

于 2013-07-20T13:18:23.447 回答
8

这对我有用:

ORDER BY cast(test_column as SIGNED)

在这里,cast函数将值从字符串转换为整数(签名),然后应用 ORDER BY。https://dev.mysql.com/doc/refman/8.0/en/cast-functions.html

于 2015-09-29T13:04:27.273 回答
2

排序工作。这是一种字典排序(按字母顺序)。该列似乎具有文本 (char, varchar, ...) 类型,因此您将获得的排序是文本的而不是数字的。

如果您想要数字排序,请使用数字列类型(例如 int)。(或适当地投列。)

于 2013-07-20T13:18:13.257 回答
2

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

于 2013-07-20T13:19:18.633 回答