从this question开始,是否可以在dense_rank
列上正确使用nvarchar
?
在这里SQL fiddle我创建了一个nvarchar
列,请自行查看结果,此处one where the column is int
答案 0 :(得分:2)
当然有可能。但是你的例子完全不同。在第一个中,值按以下顺序排序:
1
11
2
3
4
5
在第二个像这样:
1
2
3
4
5
11
因此,结果不同。存储为字符串的数字被视为字符串,而不是数字。
编辑:
有两种方法可以“将nvarchar()”视为一个数字。第一种是进行转换,例如:
dense_rank() over (order by cast(Number as decimal)) grp
(或任何你想要的类型)。
如果值为整数且没有前导零,则第二个将起作用:
dense_rank() over (order by len(Number), Number) grp