文字列の比較における、末尾の空白の扱い
SQL Server 2005、2000、7.0です。
SQL Serverで文字列の比較を行った場合に、文字列の末尾の空白がトリムされます。
たとえば以下のクエリではtrueが表示されます。
IF 'abc' = 'abc '
SELECT 'true'
ELSE
SELECT 'false'
てっきり照合順序によると思っていたら、Japanese_BIN、Japanese_BIN2でもトリムされました。
よくよく調べてみると、2000と7.0については、SQL-92でそのように定義されているからそうなってる、とのKBがありました。
http://support.microsoft.com/kb/316626/en-us
では2005は、というとMSDN内にありました。
http://msdn.microsoft.com/ja-jp/library/ms191529.aspx
というわけで、照合順序は無関係でした。
今回は必要なかったのでここまでですが、上のKBの方のURLを見る限り比較検索条件に限る話ではないようですので、必要になればまた別途調べます。