Tsql 按问题排序的T-Sql

Tsql 按问题排序的T-Sql,tsql,Tsql,我有一个sql语句,我正在使用一个简单的排序,如下所示 Select numbers From theTable Order By numbers 1 11 12 14 2 21 22 23 3 35 37 etc... 我得到的回报如下 Select numbers From theTable Order By numbers 1 11 12 14 2 21 22 23 3 35 37 etc... 我要按正常顺序订购 1 2 3 4 5 6 etc... 存储数字的列的数据类型是什

我有一个sql语句,我正在使用一个简单的排序,如下所示

Select numbers
From theTable
Order By numbers
1
11
12
14
2
21
22
23
3
35
37
etc...
我得到的回报如下

Select numbers
From theTable
Order By numbers
1
11
12
14
2
21
22
23
3
35
37
etc...
我要按正常顺序订购

1
2
3
4
5
6
etc...

存储数字的列的数据类型是什么?将其转换/强制转换为int,您应该会得到您期望的结果。

存储数字的列的数据类型是什么?将其转换/强制转换为int,您应该会得到预期的结果。

您选择的列不会存储为数值。在orderby按照您想要的方式运行之前,您需要将其转换为某种数字

它应该简单到:

select numbers from order orderby cast(numbers as int)

只要该列中的所有值都正确转换。

您选择的列不会存储为数值。在orderby按照您想要的方式运行之前,您需要将其转换为某种数字

它应该简单到:

select numbers from order orderby cast(numbers as int)

只要该列中的所有值都正确转换。

第二个应该可以工作,只要数字字段中没有实际的文本字符。order by对重命名的列不起作用。如果第二个示例的列中只有数值,那么它就可以工作了。@LittleBox:如果有字母出现,那么1 10 11 2 21的顺序是正确的。@Robert Koritnik:是的,我的观点是,如果“数字”列中至少有一个字母,则CAST将不会按顺序工作,因为CAST将抛出error@LittleBobbyTables:我的观点是,如果列允许这样的非数字值,那么按其值的数字表示对其排序就没有任何意义了。第二个应该可以工作,只要“数字”字段中没有实际的文本字符,order by就不能用于重命名的列。如果第二个示例的列中只有数值,那么它就可以工作了。@LittleBox:如果有字母出现,那么1 10 11 2 21的顺序是正确的。@Robert Koritnik:是的,我的观点是,如果“数字”列中至少有一个字母,则CAST将不会按顺序工作,因为CAST将抛出error@LittleBobbyTables:我的观点是,如果列允许这样的非数字值,那么按其值的数字表示对其排序就没有任何意义了。