0

これは、私が静かに遭遇した中で最も興味深い問題の1つです。SQLServer2008で定義されたスカラー関数があります。その戻りタイプはvarchar(max)

これはクエリです:

 Select dbo.GetJurisdictionsSubscribed(u.UserID) as 'Jurisdiction' From Users u ORDER BY Jurisdiction desc

AAAA...結果セットに2番目のレコードがある理由を誰かが説明できますか?私は降順の並べ替えを行っていますAAA...。最後に表示されるはずです。クエリをに変更した場合

Jurisdiction asc

AAA最初のレコードではなく、リストの最後から2番目になります。

これは結果セットのスクリーンショットです:http://i48.tinypic.com/23j5vzq.jpg

私は何かが足りないのですか?

4

4 に答える 4

4

これが正しいソート順です。スペースがあります。大文字と小文字を区別する照合順序を読む必要があります。

于 2012-12-11T15:09:51.557 に答える
3

スクリーンショットでわかるように、これらは「賢い」単語の前の他の行の空白です(スペースなしは「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 に答える