照合シーケンス

データベース・マネージャーは、 照合シーケンス によって文字データを比較します。 照合シーケンスとは、一組の文字のうちどちらを大きくまたは小さく、 あるいは等しく判断するかの順序付けです。

Unicode 照合アルゴリズム (UCA) は、照合シーケンスを決定するために重み表を使用します。

注: FOR BIT DATA 属性で定義された文字ストリング・データ、および BLOB データは、バイナリー・ソート・シーケンスを使用してソートされます。

例えば、照合シーケンスは特定の文字の小文字と大文字を同等に判断するために使用されます。

データベース・マネージャーにより、カスタム照合シーケンスを持つデータベースの作成が可能となります。 以降の節では、 データベースで使用する特定の照合シーケンスの決定と実際の使用に役立つ情報を示します。

データベースの 1 バイト文字はそれぞれ、内部では 0 から 255 まで (16 進数表記で X'00' から X'FF' まで) の固有の番号で表されます。 この番号を、文字のコード・ポイント といいます。 ひとかたまりの文字に割り当てられた数字をコード・ページ と呼びます。 照合シーケンスは、ソート後の順序における各文字の所定の順位とコード・ポイントとの間のマッピングです。 位置の数値は、照合シーケンスにおける文字の重み と呼ばれます。 最も単純な照合シーケンスでは、コード・ポイントと重みとが同じです。 これは基本シーケンス と呼ばれます。

例えば、文字 B と b のコード・ポイントが X'42'X'62' であるとします。 照合シーケンス表に従い、いずれもソートの重みが X'42' (B) である場合、これらは同様に照合されます。 B のソートの重みが X'9E' で、b のソートの重みが X'9D' で、bB の前にソートされます。 照合シーケンス表は各文字の重みを指定します。 表はコード・ページとは異なります。コード・ページは各文字のコード・ポイントを指定します。

次のような例について考慮します。 ASCII 文字 A から Z まではそれぞれ X'41' から X'5A' までで表されます。 これらの文字が連続してソートされる (間に文字が入らない) 照合シーケンスを記述するには、 X'41 ', X'42', ... と書くことができます。 X'59 'X'5A'

マルチバイト文字の 16 進数値もまた重みとして使用されます。 例えば、2 バイト文字 A と B のコード・ポイントがそれぞれ X'8260'X'8261' であるとします。そして、X'82'X'60'、および X'61' の照合の重みを使用して、これらの 2 つの文字をコード・ポイントに従ってソートします。

照合シーケンスにおける重みは、ユニークである必要はありません。 例えば、ある文字の大文字の文字と小文字に同じ重みを与えることができます。

照合シーケンスによりすべての 256 コード・ポイントの重みを決めると、 照合シーケンスの指定が容易になります。 各文字の重みは、その文字のコード・ポイントを使用して判別することができます。

いずれの場合も、 Db2® データベースは、データベース作成時に指定された照合表を使用します。 コード・ポイント表に現れる順序でマルチバイト文字をソートする場合は、データベースの作成時に照合シーケンスとして IDENTITY を指定しなければなりません。

いったん照合シーケンスが定義されると、そのデータベースでそれ以降行われるすべての文字比較はその照合シーケンスによって実行されます。 FOR BIT DATA または BLOB データとして定義された文字データを除き、その照合シーケンスはすべての SQL 比較および ORDER BY 節で使用され、索引や統計のセットアップにも使用されます。

以下の場合には、問題が発生する可能性があります。
  • アプリケーションが、データベースから取り出したソート済みデータを、別の照合シーケンスを使用してソートされたアプリケーション・データとマージする。
  • アプリケーションが、あるデータベースから取り出したソート済みデータを、別のデータベースから取り出したソート済みデータとマージするが、それらのデータベースで異なる照合シーケンスが使用されている。
  • アプリケーションが、ソート済みデータに関して、関係する照合シーケンスには当てはまらない事項を想定している。 例えば、特定の照合シーケンスでは、数字の照合シーケンスが英字より小さくならないことがあります。

最後に覚えておくべき点として、文字コード・ポイントの直接比較に基づくソートの結果は、IDENTITY 照合シーケンスを使用して配列された照会結果にのみ一致します。

Unicode データベースでは、グラフィック・データはデータベースの照合メカニズムを使用してソートされます。 SYSTEM 照合を持つ非 Unicode データベースでは、グラフィック・データは各バイトの重みに基づいて照合されます。