T-SQL不保持秩序

时间:2016-07-21 20:03:02

标签: c# sql-server tsql

我在SQL Server控制台C#中创建了一个数据库,其中有不同的组垂直添加到一行,例如G1,G2,G3等。

这对于需要的东西是可以的,但是当像G10那样添加一个值时,它会自动将其置于G1之下,因此不是

G1
G2
G3
G10

它看起来像这样:

G1
G10
G2
G3

我尝试了以下查询

SELECT * 
FROM mondayTable 
ORDER BY SAAT ASC

ORDER BY SAAT DESC

但它仍保持相同的顺序,但从上到下,从下到上。

以下是ORDER BY DESC

的截图

enter image description here

2 个答案:

答案 0 :(得分:3)

正如评论者指出的那样,因为您的数据是字母的,所以排序是正确的。你可以使用这样的东西:

SELECT * 
FROM mondayTable 
ORDER BY CAST(SUBSTRING(SAAT,2,LEN(SAAT)) AS INT)

答案 1 :(得分:0)

这是正常行为,因为您正在对字符进行排序。为了按顺序排列,我会在" G"。

之后填充数字

例如:

G01
G02
G03
G04
G05
G06
G07
G08
G09
G10
G11

或者如果您认为这些数字会进入1000的

G0001
G0002
G0003
G0004
G0005
G0006
G0007
G0008
G0009
G0010
G0011

一种简单的填充方式是

SELECT' G' + RIGHT(' 000' + CAST(2 as varchar(4)),4)

SELECT' G' + RIGHT(' 000' + CAST(11 as varchar(4)),4)

这将生成

G0002
G0011

另一种方法可能就是这样做

通过CAST命令(更换(SAAT,' G','')AS INT)ASC