SELECT test_column FROM test_table ORDER BY test_column
给了我这个:
1
12
123
2
3
为什么不:
1
2
3
12
123
如何对数字等字符串进行排序?
SELECT test_column FROM test_table ORDER BY test_column
给了我这个:
1
12
123
2
3
为什么不:
1
2
3
12
123
如何对数字等字符串进行排序?
尝试
SELECT test_column
FROM test_table
ORDER BY cast(test_column as int)
但是您应该考虑将列类型更改为正确的类型。
这对我有用:
ORDER BY cast(test_column as SIGNED)
在这里,cast
函数将值从字符串转换为整数(签名),然后应用 ORDER BY。https://dev.mysql.com/doc/refman/8.0/en/cast-functions.html
排序工作。这是一种字典排序(按字母顺序)。该列似乎具有文本 (char, varchar, ...) 类型,因此您将获得的排序是文本的而不是数字的。
如果您想要数字排序,请使用数字列类型(例如 int)。(或适当地投列。)
检查列的类型是否为varchar或类似的东西。看起来它是按字符串值排序的,而不是按数值排序的。如果该列仅包含数字,则最好是int类型。