SQL ServerのWHEREで大文字と小文字を区別しない
SQL Serverでは、
SELECT * FROM T_TEST WHERE name = 'test' のような
SQL文で、nameが小文字の test にのみ合致するのか、それともTESTやTest,tEstにも合致するのかを
照合順序で変えられます。
通常、照合順序はデータベース単位やテーブルの列単位で設定しますが、COLLATEを使ってSQL文内で照合順序を指定することもできます。
次のSQLは大文字と小文字を区別しません。
SELECT * FROM T_TEST WHERE name = 'test' COLLATE Japanese_XJIS_140_CI_AS_KS_WS
■リスト1:大文字と小文字を区別しないWHERESQL Serverのバージョンがあがると照合順序も新しいものが追加されるので自分のSQL Serverにあったものを選択してください。
照合順序を少し変えるとひらがな・カタカナの区別や、全角・半角の区別も制御できます。照合順序は世界各国に対応してたくさん用意されており、SQL Azureで使用できる日本語用の照合順序だけでも206個あります。下記の表はほんの抜粋です。
照合順序
照合順序 | 大文字・小文字 | ひらがな・カタカナ | 全角・半角 | Japanese_XJIS_140_CI_AS | 区別しない | 区別しない | 区別しない |
Japanese_XJIS_140_CI_AS_KS | 区別しない | 区別する | 区別しない |
Japanese_XJIS_140_CI_AS_KS_WS | 区別しない | 区別する | 区別する |