我在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
:
答案 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