メニュー

社員ブログ

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上では比較結果が同一とみなされても、
プログラム上では別物とみなされる場合もあるので、
注意して扱う必要があります。