Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL-由于工作不正常而导致的订单?_Sql - Fatal编程技术网

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
不会使用任何索引。