我使用SQL Server排序VARCHAR列,该列是一个VARCHAR(50)
,我想这样的排序是:字母数字输入
1A
1B
2
2
3
4A
4B
4C
5A
5B
5C
5N
14 Draft
21
22A
22B
23A
23B
23C
23D
23E
25
26
FR01584
MISC
我至今是:
Select *
From viewASD
ORDER BY
Case When IsNumeric(LEFT(asdNumNew,1)) = 1
Then CASE When IsNumeric(asdNumNew) = 1
Then Right(Replicate('0',20) + asdNumNew + '0', 20)
Else Right(Replicate('0',20) + asdNumNew, 20)
END
When IsNumeric(LEFT(asdNumNew,1)) = 0
Then Left(asdNumNew + Replicate('',21), 20)
End
但是这个SQL语句在'26'后面放了'14草案'。
有人可以帮忙吗?谢谢
我明白了!谢谢!我对PATINDEX函数并不了解,现在我已经研究了它,这似乎更容易理解。 – terezzy