这是我在一段时间内安静地遇到的最有趣的问题之一。我有一个在SQL Server 2008中定义的标量函数,其返回类型为varchar(max)
这是查询:
Select dbo.GetJurisdictionsSubscribed(u.UserID) as 'Jurisdiction' From Users u ORDER BY Jurisdiction desc
有人可以解释为什么AAAA...
结果集中的第二条记录?我正在进行降序排序,AAA...
应该出现在最后。如果我将查询更改为
Jurisdiction asc
AAA
在列表中排名倒数第二,而不是第一条记录。
这是结果集的屏幕截图:http://i48.tinypic.com/23j5vzq.jpg
我错过了什么吗?
答案 0 :(得分:4)
这是正确的排序顺序。你有空间。您必须阅读Case Sensitive Collation Order。
答案 1 :(得分:3)
因为,正如您在屏幕截图中看到的那样,在'Wise'字之前它们是其他行中的空白区域(并且空格大于'A')
您可以{:3}使用以下内容left trim
ORDER BY ltrim( Jurisdiction ) desc
答案 2 :(得分:0)
注意前面的空格,试试
SELECT ...
FROM ...
ORDER BY LTRIM(Jurisdiction) desc
LTRIM
没问题。
答案 3 :(得分:0)
在屏幕截图上有点难以辨别,但是你可以检查值的长度,因为我认为它们中的一些有一个领先的空间。如果是这样,那么它们将被正确分类。