0

这是我在安静的一段时间里遇到的最有趣的问题之一。我在 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

我错过了什么吗?

4

4 回答 4

4

这是正确的排序顺序。你有空格。您必须阅读区分大小写的整理顺序

于 2012-12-11T15:09:51.557 回答
3

因为,正如您在屏幕截图中看到的那样,它们是“Wise”字之前其他行中的空白(并且空格大于“A”)

您可以使用以下方法修剪此空间:

ORDER BY ltrim( Jurisdiction ) desc
于 2012-12-11T15:09:44.803 回答
0

注意前面的空格,试试

SELECT ...
FROM ...
ORDER BY LTRIM(Jurisdiction) desc

LTRIM会好的。

于 2012-12-11T15:10:58.093 回答
0

在屏幕截图上有点难以分辨,但你能检查一下值的长度吗,因为我认为其中一些有前导空格。如果是这样,那么它们将被正确排序。

于 2012-12-11T15:11:17.767 回答