SQL-由于工作不正常而导致的订单?
SQL-由于工作不正常而导致的订单?,sql,Sql,从测试表中选择测试列按测试列排序给出以下信息: 1 12 123 2 3 为什么不: 1 2 3 12 123 @约瑟夫:你说得对,谢谢。如何对数字等字符串进行排序?排序正常。这是一种词典排序(按字母顺序)。该列似乎有一个文本(char,varchar,…)类型,因此您将得到的顺序是文本而不是数字 如果需要数字排序,请使用数字列类型(例如int)。(或适当地铸造圆柱。)试试看 SELECT test_column FROM test_table ORDER BY c
从测试表中选择测试列按测试列排序
给出以下信息:
1
12
123
2
3
为什么不:
1
2
3
12
123
@约瑟夫:你说得对,谢谢。如何对数字等字符串进行排序?排序正常。这是一种词典排序(按字母顺序)。该列似乎有一个文本(char,varchar,…)类型,因此您将得到的顺序是文本而不是数字 如果需要数字排序,请使用数字列类型(例如int)。(或适当地铸造圆柱。)试试看
SELECT test_column
FROM test_table
ORDER BY cast(test_column as int)
但是您应该考虑将列类型更改为正确的列类型。检查列的类型是否为varchar或类似的类型。看起来它是按字符串值排序的,而不是按数值排序的。如果列仅包含数字,则最好为int类型。此工作模式:-
ORDER BY cast(test_column as SIGNED)
您是按字符串排序,而不是按值排序。什么类型的si列测试列?如果
test\u表的类型是基于字符串的,请执行类似于按转换顺序从test\u表中选择test\u列(int,test\u column)的操作,orderby
根据第一个字符的ASCII码对它们进行排序这个问题没有问题。值得注意的是CAST
不会使用任何索引。