DB2 Version 9 for Linux, UNIX, and Windows

Unicode 照合アルゴリズムに基づく照合名

COLLATION_KEY_BIT スカラー関数は、 Unicode 規格バージョン 4.0.0 に基づいて Unicode 照合アルゴリズム (UCA) をインプリメントします。

UCA400R1 キーワードでは、属性を持たないデフォルトの UCA が指定されます。Unicode がサポートするすべての言語の照合シーケンスをデフォルトの UCA に一度に含めることはできないため、オプションの属性を指定して UCA の順序付けをカスタマイズできます。属性は下線 (_) 文字を使用して区切ります。UCA 照合名は、UCA400R1 キーワードといずれかの指定された 属性によって形成されます。

以下の表は、照合の属性、値、および標準的な使用例を説明しています。

表 1. UCA400R1 属性
属性名 属性の簡易書式 有効な値 説明
言語1 L[ISO 639-1 言語コード] 有効な言語名の全リストは表 2 を参照してください。

ロケールの言語属性は、異なる言語や地域でユーザーの期待にかなう順序付けを得るために指定する属性の内、おそらく、最も重要な属性であると言えます。特定の言語で テキストを正しく照合するには、この属性を指定します。

有効な言語値の全リストは 表 2 を参照してください。言語を指定すると、 他のすべての照合属性が自動的にその言語に適した値に事前設定されます。 通常は、追加の照合属性を指定する必要はありません。

次に例を示します。
  • デフォルトの UCA の順序付けの場合は UCA400R1 または UCA400R1_LROOT
  • ドイツ語の場合は UCA400R1_LDE ("Köpfe" < "Kypper")
  • スウェーデン語の場合は UCA400R1_LSV ("Köpfe" > "Kypper")
強さ S 1、2、3、4、または I

強さ属性は、テキスト・ストリングを照合または比較する際に、アクセントや大/小文字を考慮に入れるかどうかを決定します。大/小文字やアクセントを使用しない書き込みシステムの場合、強さ属性は、類似の重要な機能を制御します。

可能な値は、1 次 (1)、2 次 (2)、3 次 (3)、4 次 (4)、および ID (I) です。 何を無視するかに応じて、以下のようになります。
  • アクセントと大/小文字の場合、1 次の強さレベルを使用します。
  • 大/小文字のみの場合、2 次の強さレベルを使用します。
  • アクセントと大/小文字をどちらも無視しない場合、3 次の強さレベルを使用します。

最初の 3 つの強さレベルで、ほとんどすべての文字を区別することができます。そのため、ほとんどのロケールで、デフォルトの強さ属性は 3 次のレベルに設定されています。ただし、代替属性 (後述) がシフトに設定されている場合は、4 次の強さレベルを使用することにより、空白文字、句読記号、および他のレベルでは無視される記号の間の結合を切ることができます。 ID の強さレベルは、MATHEMATICAL BOLD SMALL A 文字 (U+1D41A) や MATHEMATICAL ITALIC SMALL A 文字 (U+1D44E) などの類似した文字を区別するために使用されます。

強さ属性を高いレベルに設定すると、テキスト・ストリングの比較の速度は低下し、ソート・キーは長くなります。

次に例を示します。
  • UCA400R1_S1 は "role" = "Role" = "rôle" で照合を行う
  • UCA400R1_S2 は "role" = "Role" < "rôle" で照合を行う
  • UCA400R1_S3 は "role" < "Role" < "rôle" で照合を行う
大/小文字レベル E
  • X (オフ)
  • O (オン)

大/小文字レベル属性をオンに設定し、強さ属性を 1 次レベルに設定した場合は、アクセントは無視されますが大/小文字は区別されます。ほとんどのロケールでは、 大/小文字レベル属性はデフォルトで X に設定されています。この属性を O に設定すると、テキスト・ストリングの比較のパフォーマンスやソート・キーの長さが若干の影響を受けます。

次に例を示します。
  • UCA400R1_EX_S1 は "role" = "Role" = "rôle" で照合を行う
  • UCA400R1_EO_S1 は "role" = "rôle" < "Role" で照合を行う
大/小文字の優先順位 C X、L、または U

大/小文字優先順位属性は、大/小文字が違うだけの 2 つのテキスト・ストリングが存在する場合に、大文字のストリングの照合順序を小文字のストリングより先にするか後にするかを制御します。

使用できる値は、大文字優先 (U)、小文字優先 (L)、およびオフ (X) です。 小文字優先の設定とオフの設定の間にはほとんど違いがないため、一般的に、小文字優先の設定は使用する必要はありません。

大/小文字の優先順位属性を U または L に指定すると、ソート・キーが長くなることがあります。

次に例を示します。
  • UCA400R1_CX または UCA400R1_CL は "china" < "China" < "denmark" < "Denmark" で照合を行う
  • UCA400R1_CU は "China" < "china" < "Denmark" < "denmark" で照合を行う
代替 A N または S

代替属性は、UCA の可変文字 (空白、句読記号、および記号) の扱いを制御します。

代替属性を無視しない (N) に設定すると、これらの可変文字の違いは、英語のアルファベットのような非可変文字の違いと同じ重要度になります。 代替属性をシフト (S) に設定すると、これらの可変文字の重要度は低くなります。代替属性をシフトに設定して、強さ属性を 4 次レベルに設定すると、ストリングのその他の部分 (基本的な文字、アクセント、および大/小文字) がすべて同じである場合に、可変文字が比較の際に考慮されます。

ほとんどのロケールでは、無視しない設定がデフォルトです。

シフトを選択する場合、句読記号だけが異なるストリングが多数あるとパフォーマンスが低下します。 ソート・キーの長さは、強さレベルも高くしない限りは影響を受けません。

次に例を示します。
  • UCA400R1_AN_S3 の照合結果は "di Silva" < "Di Silva" < "diSilva" < "U.S.A." < "USA"
  • UCA400R1_AS_S3 の照合結果は "di Silva" = "diSilva" < "Di Silva" < "U.S.A." = "USA"
  • UCA400R1_AS_S4 の照合結果は "di Silva" < "diSilva" < "Di Silva" < "U.S.A." < "USA"
正規化検査 N
  • X (オフ)
  • O (オン)
正規化検査属性を O に設定すると、必要に応じて入力テキストの正規化が行われます。この属性が X (多くのロケールではデフォルト) に設定されていても、一般的な使用法で示されているテキストは正しく照合されます。ただし、次の 2 つのケースでは、この属性を O に設定してください。
  • テキストに非正規の順序でアクセント記号が含まれている場合
  • アラビア語、古代ギリシャ語、ヘブライ語、ヒンディ語、タイ語、ベトナム語などの複数の結合文字を使用するスクリプト内のテキストの場合
この属性がオンに設定されている場合は、正規化を必要とするシーケンスの頻度に応じて、中程度のストリング比較のパフォーマンス・コストが発生します。 ソート・キーの長さには、大きな影響はありません。 テキストが既に正規形 NFD または NFKD になっている場合は、パフォーマンスを向上させるためにこの属性をオフに設定できます。 次に例を示します。
  • UCA400R1_NX は "ä" = "a¨" < "ä." < "¨ で照合を行う
  • UCA400R1_NO は "ä" = "a¨" < "ä." = "¨ で照合を行う
フランス語 F
  • X (オフ)
  • O (オン)

フランス語属性では、ストリングの末尾から先頭に向かってアクセントを調べることによってストリングの分析を実行します。 この属性は、フランス語ロケールでは自動的にオンに設定されます。 この属性を使用した場合は、テキスト・ストリングの比較に軽いパフォーマンス・コストが発生します。ソート・キーの長さは変わりません。

次に例を示します。
  • UCA400R1_LFR_FX は "cote" < "coté" < "côte" < "côté" で照合を行う
  • UCA400R1_LFR は "cote" < "côte" < "coté" < "côté" で照合を行う
ひらがな H
  • X (オフ)
  • O (オン)

ひらがな属性は、日本語のひらがな文字とカタカナ文字を区別するかどうかを決定します。 日本語の JIS X 4061 規格に準拠させるためには、この属性を O に設定して、強さ属性を 4 次レベルに設定する必要があります。ただし、これを行うとテキスト・ストリングの比較の速度が低下し、ソート・キーが長くなります。

次に例を示します。
  • UCA400R1_LJA_HX_S4 の照合結果は "きゅう" = "キュウ" < "きゆう" = " "キユウ"
  • UCA400R1_LJA_HO_S4 の照合結果は "きゅう" < "キュウ" < "きゆう" < "キユウ"
注: 1 言語属性を使用する場合は、この属性をストリングの最初の属性にする必要があります。

照合に有効な言語名を以下に示します。ここに示す照合はすべて、Unicode Consortium が公表している Common Locale Data Repository (CLDR) バージョン 1.2 に準拠しています。 「デフォルト照合属性」列は、特定の言語の UCA400R1 照合のフルネームを示しています。例えば、UCA400R1_LAR は UCA400R1_LAR_AN_CX_EX_FX_HX_NX_S3 と等価です。

表 2. 有効な言語名
言語属性 言語 デフォルト照合属性 注釈
LAR アラビア語 UCA400R1_LAR_AN_CX_EX_FX_HX_NX_S3  
LBE ベラルーシ語 UCA400R1_LBE_AN_CX_EX_FX_HX_NX_S3 LRU と等価
LBG ブルガリア語 UCA400R1_LBG_AN_CX_EX_FX_HX_NX_S3 LRU と等価
LCA バレンシア語、カタロニア語 UCA400R1_LCA_AN_CX_EX_FO_HX_NX_S3  
LCS チェコ語 UCA400R1_LCS_AN_CX_EX_FX_HX_NX_S3  
LDA デンマーク語 UCA400R1_LDA_AN_CU_EX_FX_HX_NX_S3  
LDE ドイツ語 UCA400R1_LDE_AN_CX_EX_FX_HX_NX_S3  
LEL 現代ギリシャ語 UCA400R1_LEL_AN_CX_EX_FX_HX_NO_S3 LROOT_NO と等価
LMT マルタ語 UCA400R1_LMT_AN_CU_EX_FX_HX_NX_S3  
LEN 英語 UCA400R1_LEN_AN_CX_EX_FX_HX_NX_S3  
LEO エスペラント語 UCA400R1_LEO_AN_CX_EX_FX_HX_NX_S3
LES カスティリャ語、スペイン語 UCA400R1_LES_AN_CX_EX_FX_HX_NX_S3  
LET エストニア語 UCA400R1_LET_AN_CX_EX_FX_HX_NX_S3  
LFA ペルシア語 UCA400R1_LFA_AN_CX_EX_FX_HX_NO_S3  
LFI フィンランド語 UCA400R1_LFI_AN_CX_EX_FX_HX_NX_S3  
LFO フェロー語 UCA400R1_LFO_AN_CX_EX_FX_HX_NX_S3  
LFR フランス語 UCA400R1_LFR_AN_CX_EX_FO_HX_NX_S3  
LGU グジャラート語 UCA400R1_LGU_AN_CX_EX_FX_HX_NO_S3  
LHE ヘブライ語 UCA400R1_LHE_AN_CX_EX_FX_HX_NO_S3 LROOT_NO と等価
LHI ヒンディ語 UCA400R1_LHI_AN_CX_EX_FX_HX_NO_S3  
LHR クロアチア語 UCA400R1_LHR_AN_CX_EX_FX_HX_NX_S3  
LHU ハンガリー語 UCA400R1_LHU_AN_CX_EX_FX_HX_NX_S3  
LIS アイスランド語 UCA400R1_LIS_AN_CX_EX_FX_HX_NX_S3  
LIT イタリア語 UCA400R1_LIT_AN_CX_EX_FX_HX_NX_S3  
LJA 日本語 UCA400R1_LJA_AN_CX_EX_FX_HO_NX_S3 ひらがなとそれに相当するカタカナを等価として扱います。カタカナの前にひらがなをソートする場合は、強さレベルを 4 に設定してください。
LKK カザフ語 UCA400R1_LKK_AN_CX_EX_FX_HX_NO_S3  
LKL カラーリット語、グリーンランド語 UCA400R1_LKL_AN_CX_EX_FX_HX_NX_S3  
LKN カンナダ語 UCA400R1_LKN_AN_CX_EX_FX_HX_NO_S3 LROOT_NO と等価
LKO 韓国語 UCA400R1_LKO_AN_CX_EX_FX_HX_NX_S3  
LLT リトアニア語 UCA400R1_LLT_AN_CX_EX_FX_HX_NX_S3  
LLV ラトビア語 UCA400R1_LLV_AN_CX_EX_FX_HX_NX_S3  
LMK マケドニア語 UCA400R1_LMK_AN_CX_EX_FX_HX_NX_S3 LRU と等価
LMR マラーティー語 UCA400R1_LMR_AN_CX_EX_FX_HX_NO_S3 LROOT_NO と等価
LNB ノルウェー語ブークモール UCA400R1_LNB_AN_CX_EX_FX_HX_NX_S3  
LNN ノルウェー語ニーノシュク UCA400R1_LNN_AN_CX_EX_FX_HX_NX_S3  
LOM オロモ語 UCA400R1_LOM_AN_CX_EX_FX_HX_NX_S3  
LPA パンジャブ語 UCA400R1_LPA_AN_CX_EX_FX_HX_NO_S3 LROOT_NO と等価
LPL ポーランド語 UCA400R1_LPL_AN_CX_EX_FX_HX_NX_S3  
LPS パシュート語 UCA400R1_LPS_AN_CX_EX_FX_HX_NO_S3  
LRO ルーマニア語 UCA400R1_LRO_AN_CX_EX_FX_HX_NX_S3  
LROOT   UCA400R1_LROOT_AN_CX_EX_FX_HX_NX_S3 デフォルト UCA
LRU ロシア語 UCA400R1_LRU_AN_CX_EX_FX_HX_NX_S3  
LSH セルボ・クロアチア語 UCA400R1_LSH_AN_CX_EX_FX_HX_NX_S3 LHR と等価
LSK スロバキア語 UCA400R1_LSK_AN_CX_EX_FX_HX_NX_S3  
LSL スロベニア語 UCA400R1_LSL_AN_CX_EX_FX_HX_NX_S3  
LSQ アルバニア語 UCA400R1_LSQ_AN_CX_EX_FX_HX_NX_S3  
LSR セルビア語 UCA400R1_LSR_AN_CX_EX_FX_HX_NX_S3 LRU と等価
LSV スウェーデン語 UCA400R1_LSV_AN_CX_EX_FX_HX_NX_S3  
LTA タミール語 UCA400R1_LTA_AN_CX_EX_FX_HX_NO_S3 LROOT_NO と等価
LTE テルグ語 UCA400R1_LTE_AN_CX_EX_FX_HX_NO_S3  
LTH タイ語 UCA400R1_LTH_AN_CX_EX_FX_HX_NO_S3  
LTR トルコ語 UCA400R1_LTR_AN_CX_EX_FX_HX_NX_S3  
LUK ウクライナ語 UCA400R1_LUK_AN_CX_EX_FX_HX_NX_S3  
LVI ベトナム語 UCA400R1_LVI_AN_CX_EX_FX_HX_NO_S3  

バージョン 9.1 より前のバージョンの DB2 データベースからの UCA400_NO、UCA400_LSK、および UCA400_LTH 照合は、データベースの作成時には引き続きサポートされています。ただし、COLLATION_KEY_BIT 関数では、これらの照合がサポートされていません。

Unicode では、ほとんどのアクセント付き文字が複数の方法で表現できます。例えば、Ö という文字は、U+00D6 (<LATIN CAPITAL LETTER O WITH DIAERESIS>) という 1 つのコード・ポイントで表現することもできますし、U+004F U+0308 (<LATIN CAPITAL LETTER O><COMBINING DIAERESIS>) という 2 つのコード・ポイントで表現することもできます。 照合 UCA400_NO、UCA400_LSK、および UCA400_LTH では、常に、文字の表現方法の違いが区別されます。

例えば、O と、Ö の 2 つの異なる表現方法との順序付けを考えます。
  • UCA400_NO の場合は 'O' < U+004F U+0308 < U+00D6 となります。
  • UCA400R1_NO の場合は 'O' < U+004F U+0308 = U+00D6 となります。

Unicode と UCA に関する追加情報

Unicode 照合アルゴリズムについての詳細、および正規化、NFD、および NFKDについての詳細は、http://www.unicode.org にある Unicode Consortium の Web サイトで入手可能な Unicode Technical Standard #10を参照してください。

大/小文字の優先順位の設定の違いなど、さらに詳しい情報については、http://www.ibm.com/software/globalization/icu にある ICU (International Components for Unicode) ライブラリーのバージョン 3.2 のユーザー・ガイドで、照合に関するセクションを参照してください。

Common Locale Data Repository (CLDR) バージョン 1.2 は、Unicode Consortium によって http://www.unicode.org/cldr で公表されています。

関連情報
COLLATION_KEY_BIT スカラー関数