Windows 照合順序並べ替えスタイル

SQL Server をセットアップする際、Windows 照合順序かバイナリ照合順序のいずれかを選択するよう求められます。照合順序の選択は、MicrosoftSQL Server インスタンスにおけるデータ比較や並べ替え順の動作に影響します。SQL Server を実装するときは、このトピックで説明する考慮事項を参考にして、Microsoft Windows 照合順序とバイナリ照合順序のうち、どちらを選択するべきかを判断してください。

注意注意

Windows 照合順序の場合、Unicode データ型 nchar、nvarchar、ntext は、非 Unicode データ型 char、varchar、text と同じように並べ替えられます。

Windows 照合順序は、関連する Windows ロケールに基づいて文字データを格納するための規則を定義します。基本の Windows 照合順序規則は、非 Unicode 文字データの格納に使用されるコード ページだけでなく、辞書順の並べ替えが適用される場合にどの文字または言語が使用されるのかを指定します。バイナリ照合順序では、ロケールおよびデータ型によって定義されるコード値のシーケンスに基づいてデータを並べ替えます。Analysis Services のバイナリ照合順序では、使用するロケールと ANSI コード ページを定義し、バイナリ並べ替え順が設定されます。バイナリ照合順序は比較的単純なので、アプリケーションのパフォーマンス向上に役立ちます。非 Unicode データ型の場合は、ANSI コード ページで定義されているコード ポイントに基づいてデータが比較されます。Unicode データ型の場合は、Unicode コード ポイントに基づいてデータが比較されます。Unicode データ型のバイナリ照合順序では、データを並べ替える際にロケールが考慮されません。たとえば、Unicode データに対して Latin_1_General_BIN と Japanese_BIN を使用した場合、並べ替え結果はどちらも同じになります。

SQL Server の以前のバイナリ照合では、Unicode データに対して不完全なコード ポイント間比較を行っていました。つまり、最初の文字を WCHAR として比較し、その後、バイト単位でデータを比較していました。旧バージョンとの互換性を維持するため、既存のバイナリ照合順序セマンティクスは変更されません。

SQL Server 最新リリースのバイナリ照合順序には、純粋なコード ポイント比較照合順序セットも追加されました。このバイナリ照合順序へ移行すると、完全なコード ポイント比較を利用でき、新しいアプリケーションの開発にこのバイナリ照合順序を活用できるようになります。コード ポイント照合順序セマンティクスを実装する照合順序名は、BIN2 サフィックスによって識別されます。BIN2 に対応する新しいバイナリ並べ替え用の比較フラグもあります。詳細については、「BIN 照合順序と BIN2 照合順序の使用に関するガイドライン」を参照してください。

次の表は、SQL Server に備わっている Windows 照合順序の並べ替え順オプションを示しています。

並べ替え順 (サフィックス)

並べ替え順の説明

バイナリ (_BIN)1

各文字に定義されているビット パターンに基づいて、SQL Server テーブルのデータの並べ替えおよび比較が行われます。バイナリ並べ替え順では、大文字と小文字が区別され、アクセントが区別されます。バイナリは、最速の並べ替え順でもあります。詳細については、「BIN 照合順序と BIN2 照合順序の使用に関するガイドライン」を参照してください。

このオプションを選択しない場合は、関連する言語または文字の辞書で定義されている並べ替え規則と比較規則が使用されます。

バイナリ コード ポイント (_BIN2)1

Unicode データの Unicode コード ポイントに基づいて、SQL Server テーブル内のデータが並べ替えられ、比較されます。非 Unicode データの場合、バイナリ コード ポイントではバイナリ並べ替えと同一の比較が使用されます。

バイナリ コード ポイント並べ替え順を使用すると、並べ替えられた SQL Server データを比較するアプリケーションでデータを再度並べ替える必要がないという利点があります。このため、バイナリ コード ポイント並べ替え順を使用すると、アプリケーション開発が簡略化され、パフォーマンスを向上させることができます。詳細については、「BIN 照合順序と BIN2 照合順序の使用に関するガイドライン」を参照してください。

大文字小文字を区別する (_CS)

大文字と小文字が区別されます。このオプションを選択した場合、最初に小文字、その後で大文字が並べ替えられます。

このオプションを選択しない場合は、大文字と小文字を同じものとして並べ替えが行われます。

アクセントを区別する (_AS)

アクセントのある文字とアクセントのない文字が区別されます。たとえば、"a" と "ấ" は等しくありません。

このオプションを選択しない場合、アクセントのある文字とアクセントのない文字が同じものと見なされ、並べ替えが行われます。

かなを区別する (_KS)

日本語のひらがな文字とカタカナ文字が区別されます。

このオプションを選択しない場合は、ひらがなとカタカナを同じものと見なして並べ替えが行われます。

文字幅を区別する (_WS)

同一文字の 1 バイト表現と 2 バイト表現が区別されます。

このオプションを選択しない場合は、同一文字の 1 バイト表現と 2 バイト表現を同じものと見なして、並べ替えが行われます。

1 このオプションを選択した場合、[大文字小文字を区別する]、[アクセントを区別する]、[かなを区別する]、[文字幅を区別する] の各オプションは使用できなくなります。

Windows 照合順序の例

各 Windows 照合順序は、大文字小文字、アクセント、文字幅、かなの区別を定義する一連のサフィックスとして組み合わせられます。次の例で、サフィックスのさまざまな組み合わせに対応する並べ替え順の動作を説明します。

Windows 照合順序サフィックス

並べ替え順の説明

_BIN1

バイナリ並べ替え

_BIN21

バイナリ コード ポイント並べ替え順

_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

大文字小文字を区別する、アクセントを区別する、かなを区別しない、文字幅を区別する

1BIN またはバイナリ コード ポイントが選択されている場合、大文字と小文字を区別する、アクセントを区別する、かなを区別する、および文字幅を区別するオプションは使用できません。