SQL Server における照合順序のメモです。
照合順序とは?
SQL Server における照合順序とは、データの比較やソートの方法を定義するものです。テキストデータの方法(どのように比較するか)、ソートするかを決めるもので、検索結果の順番やソートした時の結果に影響が出ます。
データベースでデフォルトで設定されている照合順序を基本としますが、クエリ内で明示的に指定した場合は、クエリ内で指定した照合順序が優先されます。
照合順序の確認クエリ
照合順序はデータベースごとに設定されています。確認クエリは以下。
SELECT DATABASEPROPERTYEX('データベース名', 'Collation')
これを実行すると、データベースに設定されている照合順序を確認することが出来ます。
マイクロソフトがサンプルで提供しているデータベースの照合順序は、「SQL_Latin1_General_CP1_CI_AS」ですね。
照合順序の構成
照合順序の構成ですが、
Windows ロケール + オプション
という組み合わせです。
「SQL_Latin1_General_CP1_CI_AS」の場合、
- ロケール:SQL_Latin1_General_CP1_CI ←英語(米国)
- オプション:_AS ←アクセントを区別する
となります。「SQL_Latin1_General_CP1_CI_AS」の場合は、「米国英語&アクセント区別」が照合順序ということです。
照合順序のオプション
照合順序のオプションは以下の通り。
オプション | 内容 |
_CS | 大文字と小文字を区別する |
_AS | アクセントを区別する |
_KS | かなを区別する |
_WS | 文字幅を区別する |
_VSS | バリエーションの選択を区別する |
_BIN | バイナリ |
_BIN2 | バイナリコード ポイント |
_UTF8 | UTF-8 |
ロケールの後に指定すれば、照合順序となります。
例えば、「Japanese_BIN」という ロケール+オプション の場合、日本語のデータをバイナリで比較することになります。