Windows 照合順序並べ替えスタイル
SQL Server をセットアップする際、Windows 照合順序かバイナリ照合順序のいずれかを選択するよう求められます。照合順序の選択は、Microsoft SQL Server インスタンスにおけるデータ比較や並べ替え順の動作に影響します。SQL Server を実装するときは、このトピックで説明する考慮事項を参考にして、Microsoft Windows 照合順序とバイナリ照合順序のうち、どちらを選択するべきかを判断してください。
メモ : |
---|
Windows 照合順序の場合、Unicode データ型 nchar、nvarchar、ntext は、非 Unicode データ型 char、varchar、text と同じように並べ替えられます。 |
Windows 照合順序は、関連する Windows ロケールに基づいて文字データを格納するための規則を定義します。基本の Windows 照合順序規則は、非 Unicode 文字データの格納に使用されるコード ページだけでなく、辞書順の並べ替えが適用される場合にどの文字または言語が使用されるのかを指定します。バイナリ照合順序では、ロケールおよびデータ型によって定義されるコード値のシーケンスに基づいてデータを並べ替えます。SQL Server のバイナリ照合順序は、使用する言語ロケールと ANSI コード ページを定義し、バイナリ並べ替え順を実施します。バイナリ照合順序は比較的単純なので、アプリケーションのパフォーマンス向上に役立ちます。非 Unicode データ型の場合は、ANSI コード ページで定義されているコード ポイントに基づいてデータが比較されます。Unicode データ型の場合は、Unicode コード ポイントに基づいてデータが比較されます。Unicode データ型のバイナリ照合順序では、データを並べ替える際にロケールが考慮されません。たとえば、Unicode データに対して Latin_1_General_BIN と Japanese_BIN を使用した場合、並べ替え結果はどちらも同じになります。
SQL Server の以前のバイナリ照合では、Unicode データに対して不完全なコード ポイント間比較を行っていました。つまり、最初の文字を WCHAR として比較し、その後、バイト単位でデータを比較していました。旧バージョンとの互換性を維持するため、既存のバイナリ照合順序セマンティクスは変更されません。
SQL Server 最新リリースのバイナリ照合順序には、純粋なコード ポイント比較照合順序セットも新しく追加されました。この新しいバイナリ照合順序へ移行すると、完全なコード ポイント比較を利用でき、新しいアプリケーションの開発にこの新しいバイナリ照合順序を活用できるようになります。新しいコード ポイント照合順序セマンティクスを実装する照合順序名は、新しい BIN2 サフィックスによって識別されます。さらに、BIN2 に対応する新しい比較フラグが新規バイナリ並べ替え用に追加されます。詳細については、「バイナリ照合順序の使用」を参照してください。
次の表は、SQL Server 2005 に備わっている Windows 照合順序の並べ替え順オプションを示しています。
並べ替え順 (サフィックス) | 並べ替え順の説明 |
---|---|
バイナリ (_BIN)1 |
各文字に定義されているビット パターンに基づいて、SQL Server テーブルのデータの並べ替えおよび比較が行われます。バイナリ並べ替え順では、大文字小文字とアクセントが区別されます。バイナリは、最速の並べ替え順でもあります。詳細については、「バイナリ照合順序の使用」を参照してください。 このオプションを選択しない場合は、関連する言語または文字の辞書で定義されている並べ替え規則と比較規則が使用されます。 |
バイナリコード ポイント (_BIN2)1 |
Unicode データの Unicode コード ポイントに基づいて、SQL Server テーブル内のデータが並べ替えられ、比較されます。非 Unicode データの場合、バイナリコード ポイントではバイナリ並べ替えと同一の比較が使用されます。 バイナリコード ポイントの並べ替え順を使用すれば、一度並べ替えた SQL Server データをアプリケーションで比較する際、それらのデータを再度並べ替える必要がありません。したがって、アプリケーション開発が容易になり、パフォーマンスも向上します。詳細については、「バイナリ照合順序の使用」を参照してください。 |
大文字小文字を区別する (_CS) |
大文字と小文字が区別されます。このオプションを選択した場合、最初に小文字、その後で大文字が並べ替えられます。 このオプションを選択しない場合は、大文字と小文字を同じものとして並べ替えが行われます。 |
アクセントを区別する (_AS) |
アクセントのある文字とアクセントのない文字が区別されます。たとえば、"a" と "ấ" は等しくありません。 このオプションを選択しない場合、アクセントのある文字とアクセントのない文字が同じものと見なされ、並べ替えが行われます。 |
かなを区別する (_KS) |
日本語のひらがな文字とカタカナ文字が区別されます。 このオプションを選択しない場合は、ひらがなとカタカナを同じものと見なして並べ替えが行われます。 |
文字幅を区別する (_WS) |
同一文字の 1 バイト表現と 2 バイト表現が区別されます。 このオプションを選択しない場合は、同一文字の 1 バイト表現と 2 バイト表現を同じものと見なして、並べ替えが行われます。 |
1 このオプションを選択した場合、[大文字小文字を区別する]、[アクセントを区別する]、[かなを区別する]、[文字幅を区別する] の各オプションは使用できなくなります。
Windows 照合順序の例
各 Windows 照合順序は、大文字小文字、アクセント、文字幅、かなの区別を定義する一連のサフィックスとして組み合わせられます。次の例で、サフィックスのさまざまな組み合わせに対応する並べ替え順の動作を説明します。
Windows 照合順序サフィックス | 並べ替え順の説明 |
---|---|
_BIN1 |
バイナリ並べ替え |
_BIN21 |
バイナリコード ポイント並べ替え順 (SQL Server 2005 の新機能) |
_CI_AI |
大文字小文字を区別しない、アクセントを区別しない、かなを区別しない、文字幅を区別しない |
_CI_AI_KS |
大文字小文字を区別しない、アクセントを区別しない、かなを区別する、文字幅を区別しない |
_CI_AI_KS_WS |
大文字小文字を区別しない、アクセントを区別しない、かなを区別する、文字幅を区別する |
_CI_AI_WS |
大文字小文字を区別しない、アクセントを区別しない、かなを区別しない、文字幅を区別する |
_CI_AS |
大文字小文字を区別しない、アクセントを区別する、かなを区別しない、文字幅を区別しない |
_CI_AS_KS |
大文字小文字を区別しない、アクセントを区別する、かなを区別する、文字幅を区別しない |
_CI_AS_KS_WS |
大文字小文字を区別しない、アクセントを区別する、かなを区別する、文字幅を区別する |
_CI_AS_WS |
大文字小文字を区別しない、アクセントを区別する、かなを区別しない、文字幅を区別する |
_CS_AI |
大文字小文字を区別する、アクセントを区別しない、かなを区別しない、文字幅を区別しない |
_CS_AI_KS |
大文字小文字を区別する、アクセントを区別しない、かなを区別する、文字幅を区別しない |
_CS_AI_KS_WS |
大文字小文字を区別する、アクセントを区別しない、かなを区別する、文字幅を区別する |
_CS_AI_WS |
大文字小文字を区別する、アクセントを区別しない、かなを区別しない、文字幅を区別する |
_CS_AS |
大文字小文字を区別する、アクセントを区別する、かなを区別しない、文字幅を区別しない |
_CS_AS_KS |
大文字小文字を区別する、アクセントを区別する、かなを区別する、文字幅を区別しない |
_CS_AS_KS_WS |
大文字小文字を区別する、アクセントを区別する、かなを区別する、文字幅を区別する |
_CS_AS_WS |
大文字小文字を区別する、アクセントを区別する、かなを区別しない、文字幅を区別する |
1 [BIN] またはバイナリコード ポイントを選択した場合、[大文字小文字を区別する]、[アクセントを区別する]、[かなを区別する]、[文字幅を区別する] の各オプションは使用できなくなります。