文字列の比較における、末尾の空白の扱い | 野良エンジニアの足跡

文字列の比較における、末尾の空白の扱い

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を見る限り比較検索条件に限る話ではないようですので、必要になればまた別途調べます。