我在 SQL Server 2005 中有一个包含字母或数字的 NVARCHAR(255) 列。
Declare @Temp Table(Name NVARCHAR(255))
Insert Into @Temp Values('1')
Insert Into @Temp Values('2')
Insert Into @Temp Values('3')
Insert Into @Temp Values('10')
Insert Into @Temp Values('aaaa')
Insert Into @Temp Values('ccaaaaa')
Insert Into @Temp Values('cca')
Insert Into @Temp Values('cccc')
Insert Into @Temp Values('ccaa')
Select * From @Temp Order by Name
此查询返回错误结果。有人可以解释一下为什么吗?
另外,有人可以告诉我使用哪个查询来对值进行排序。
我想获得下一个序列:
1
2
3
10
aaaa
cca
ccaa
ccaaaaa
cccc
谢谢
最佳答案
@Shark 向您展示了原因,我将向您展示 SELECT
中的解决方法,以获得您想要的结果:
Select * From @Temp
Order by
case isnumeric(name)
when 1 then cast(name as int)
else 999999999999999 end,
name
关于sql - SQL Server 中 NVARCHAR 列的排序依据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9265792/