SQLの比較条件にスペースを入れたとき
最近、久方ぶりにがっつりとSQLを書いていたりするのですが、いろいろと忘れているというか、細かい仕様を理解しきれていないというか^^;
今日も一通り書き終えて動作確認もし、最後にもう一度だけコードを確認しておくかーと見直してみていると、一致しないはずのデータが取得できていることに気が付いてしまいました・・。
テーブルに格納された値は前後のスペースを除いたきれいな状態。それに対して検索をかけるときの条件には余分なスペースが残ったまま、こんな感じ。
ID | NAME |
---|---|
1 | ahiru_sp |
SELECT ID FROM USERS WHERE NAME = 'ahiru_sp△'
これ、文字列として一致しないと思っていたのですが、調べてみると後ろの空白は無視されるとのこと。
比較検索条件 - TechNet.aspx)
比較では後続の空白は無視されます。たとえば、以下はすべて同じです。
WHERE LastName = 'White' WHERE LastName = 'White ' WHERE LastName = 'White' + SPACE(1)
なるほどそうだったのか。という感じで、また一つ賢く(?)なりました。