SQL Server文字列比較について
最近、業務にてSQL Serverを扱う機会がありました。
※Microsoft SQL Server(マイクロソフト エスキューエル サーバ)とは、
マイクロソフトが開発している、関係データベース管理システム (RDBMS) である。
略称は「SQL Server」または「MS SQL」などと呼ばれている。
主要な問い合わせ言語 (クエリ言語)は、T-SQLとANSI SQLである。
(ウィキペディア(Wikipedia)より)
この仕事を始めてから初めての経験でしたので、
そこでちょっと学んだことを備忘の意味も込めて、
blogに記載します。
--- SQL Server での文字列の比較について ---
実際にSQL Serverを触ってみて、
若干ハマったのが文字列の比較の方法についてでした。
SQL Serverは文字列を比較する際、
比較対象の間の文字列長が異なると、
文字数が少ない方の文字列の後ろにスペースを足して、文字の多い方にあわせて比較します。
ですので、'test' = 'test ' の結果は「true」と判定されます。
この比較方法は LIKE 以外の全ての文字列比較で使われます。
そのため、
unique key constraint 付きのカラムに'test' = 'test 'を入れようとすると、
同一値とみなされエラーになります。
スペースはパット見で見えないですし、
DB上では比較結果が同一とみなされても、
プログラム上では別物とみなされる場合もあるので、
注意して扱う必要があります。