COLLATION_KEY_BIT スカラー関数は、 Unicode 規格バージョン 4.0.0 に基づいて Unicode 照合アルゴリズム (UCA) をインプリメントします。
UCA400R1 キーワードでは、属性を持たないデフォルトの UCA が指定されます。Unicode がサポートするすべての言語の照合シーケンスをデフォルトの UCA に一度に含めることはできないため、オプションの属性を指定して UCA の順序付けをカスタマイズできます。属性は下線 (_) 文字を使用して区切ります。UCA 照合名は、UCA400R1 キーワードといずれかの指定された 属性によって形成されます。
以下の表は、照合の属性、値、および標準的な使用例を説明しています。
属性名 | 属性の簡易書式 | 有効な値 | 説明 |
---|---|---|---|
言語1 | L[ISO 639-1 言語コード] | 有効な言語名の全リストは表 2 を参照してください。 | ロケールの言語属性は、異なる言語や地域でユーザーの期待にかなう順序付けを得るために指定する属性の内、おそらく、最も重要な属性であると言えます。特定の言語で テキストを正しく照合するには、この属性を指定します。 有効な言語値の全リストは 表 2 を参照してください。言語を指定すると、 他のすべての照合属性が自動的にその言語に適した値に事前設定されます。 通常は、追加の照合属性を指定する必要はありません。 次に例を示します。
|
強さ | S | 1、2、3、4、または I | 強さ属性は、テキスト・ストリングを照合または比較する際に、アクセントや大/小文字を考慮に入れるかどうかを決定します。大/小文字やアクセントを使用しない書き込みシステムの場合、強さ属性は、類似の重要な機能を制御します。 可能な値は、1 次 (1)、2 次 (2)、3 次 (3)、4 次 (4)、および ID (I) です。
何を無視するかに応じて、以下のようになります。
最初の 3 つの強さレベルで、ほとんどすべての文字を区別することができます。そのため、ほとんどのロケールで、デフォルトの強さ属性は 3 次のレベルに設定されています。ただし、代替属性 (後述) がシフトに設定されている場合は、4 次の強さレベルを使用することにより、空白文字、句読記号、および他のレベルでは無視される記号の間の結合を切ることができます。 ID の強さレベルは、MATHEMATICAL BOLD SMALL A 文字 (U+1D41A) や MATHEMATICAL ITALIC SMALL A 文字 (U+1D44E) などの類似した文字を区別するために使用されます。 強さ属性を高いレベルに設定すると、テキスト・ストリングの比較の速度は低下し、ソート・キーは長くなります。 次に例を示します。
|
大/小文字レベル | E |
|
大/小文字レベル属性をオンに設定し、強さ属性を 1 次レベルに設定した場合は、アクセントは無視されますが大/小文字は区別されます。ほとんどのロケールでは、 大/小文字レベル属性はデフォルトで X に設定されています。この属性を O に設定すると、テキスト・ストリングの比較のパフォーマンスやソート・キーの長さが若干の影響を受けます。 次に例を示します。
|
大/小文字の優先順位 | C | X、L、または U | 大/小文字優先順位属性は、大/小文字が違うだけの 2 つのテキスト・ストリングが存在する場合に、大文字のストリングの照合順序を小文字のストリングより先にするか後にするかを制御します。 使用できる値は、大文字優先 (U)、小文字優先 (L)、およびオフ (X) です。 小文字優先の設定とオフの設定の間にはほとんど違いがないため、一般的に、小文字優先の設定は使用する必要はありません。 大/小文字の優先順位属性を U または L に指定すると、ソート・キーが長くなることがあります。 次に例を示します。
|
代替 | A | N または S | 代替属性は、UCA の可変文字 (空白、句読記号、および記号) の扱いを制御します。 代替属性を無視しない (N) に設定すると、これらの可変文字の違いは、英語のアルファベットのような非可変文字の違いと同じ重要度になります。 代替属性をシフト (S) に設定すると、これらの可変文字の重要度は低くなります。代替属性をシフトに設定して、強さ属性を 4 次レベルに設定すると、ストリングのその他の部分 (基本的な文字、アクセント、および大/小文字) がすべて同じである場合に、可変文字が比較の際に考慮されます。 ほとんどのロケールでは、無視しない設定がデフォルトです。 シフトを選択する場合、句読記号だけが異なるストリングが多数あるとパフォーマンスが低下します。 ソート・キーの長さは、強さレベルも高くしない限りは影響を受けません。 次に例を示します。
|
正規化検査 | N |
|
正規化検査属性を O に設定すると、必要に応じて入力テキストの正規化が行われます。この属性が X (多くのロケールではデフォルト) に設定されていても、一般的な使用法で示されているテキストは正しく照合されます。ただし、次の 2 つのケースでは、この属性を O に設定してください。
この属性がオンに設定されている場合は、正規化を必要とするシーケンスの頻度に応じて、中程度のストリング比較のパフォーマンス・コストが発生します。
ソート・キーの長さには、大きな影響はありません。
テキストが既に正規形 NFD または NFKD になっている場合は、パフォーマンスを向上させるためにこの属性をオフに設定できます。
次に例を示します。
|
フランス語 | F |
|
フランス語属性では、ストリングの末尾から先頭に向かってアクセントを調べることによってストリングの分析を実行します。 この属性は、フランス語ロケールでは自動的にオンに設定されます。 この属性を使用した場合は、テキスト・ストリングの比較に軽いパフォーマンス・コストが発生します。ソート・キーの長さは変わりません。 次に例を示します。
|
ひらがな | H |
|
ひらがな属性は、日本語のひらがな文字とカタカナ文字を区別するかどうかを決定します。 日本語の JIS X 4061 規格に準拠させるためには、この属性を O に設定して、強さ属性を 4 次レベルに設定する必要があります。ただし、これを行うとテキスト・ストリングの比較の速度が低下し、ソート・キーが長くなります。 次に例を示します。
|
照合に有効な言語名を以下に示します。ここに示す照合はすべて、Unicode Consortium が公表している Common Locale Data Repository (CLDR) バージョン 1.2 に準拠しています。 「デフォルト照合属性」列は、特定の言語の UCA400R1 照合のフルネームを示しています。例えば、UCA400R1_LAR は UCA400R1_LAR_AN_CX_EX_FX_HX_NX_S3 と等価です。
言語属性 | 言語 | デフォルト照合属性 | 注釈 |
---|---|---|---|
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 では、常に、文字の表現方法の違いが区別されます。
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 で公表されています。