Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - データベース管理 » データベースの設定 » 国際言語と文字セット » 照合の知識

 

Unicode 照合アルゴリズム (UCA)

Unicode 照合アルゴリズム (UCA) は、Unicode 文字セット全体のソートに使用するアルゴリズムです。これにより、言語的に正しい比較、ソート、大文字小文字変換が実現されます。UCA は Unicode 標準の一部として開発されました。SQL Anywhere では、IBM が開発および保守している International Components for Unicode (ICU) オープン・ソース・ライブラリを使用して UCA を実装しています。

注意

デフォルトの UCA ソート順により、ほとんどの言語のほとんどの文字が適切な順序でソートされます。ただし、同じ文字を使用する言語間でソートや比較にさまざまな違いがあるため、UCA ですべての言語について適切なソート順が得られるわけではありません。そのため、ICU は UCA を調整できる構文を提供しています。照合の適合化オプションを参照してください。

UCA を使用すると、少ない領域と時間で高度な比較、ソート、大文字小文字変換を実現できます。

マッピング後の文字列は元の文字列より長くなります。このアルゴリズムは、複雑な文字を的確に処理できます。

SQL Anywhere 照合アルゴリズムとは異なり、Unicode 照合アルゴリズムはシングルバイトの UTF-8 文字セットにのみ使用され、各文字を 1 つまたは複数の属性で区別します。文字の場合、属性は基底文字、アクセント記号、大文字小文字です。

文字以外の場合、通常は基底文字だけが属性になります。

UCA は、次の方法で文字を比較します。

  • 基底文字を比較します。文字列の基底文字が他の文字列と異なる場合は、その時点で比較が完了します。アクセント記号や大文字小文字の違いは考慮されません。

  • データベースでアクセント記号の違いが区別される場合は、アクセント記号が比較されます。アクセント記号が異なる場合、その時点で比較が完了します。大文字小文字の違いは考慮されません。

  • データベースで大文字と小文字が区別される場合は、各文字の大文字と小文字が比較されます。

元の文字列の値が同じとみなされるのは、基底文字、アクセント記号、大文字小文字がまったく同じ場合だけです。

UCA を使用して次の表の第 1 カラムの文字列を比較するとします。後続のカラムには各文字列の 3 つの属性が記載されています。基底文字は同じで、違うのはアクセント記号と大文字小文字だけです。

文字列 基底文字 アクセント記号 大文字小文字
noel noel なし、なし、なし、なし 小、小、小、小
noël noel なし、なし、アクセント記号、なし、 小、小、小、小
Noel noel なし、なし、なし、なし 大、小、小、小
Noël noel なし、なし、アクセント記号、なし、 大、小、小、小

次の表は、UCA を使用した場合にアクセント記号と大文字小文字の区別により可能な 4 つの条件によるソート順を示します。

アクセント記号の区別 [大文字と小文字を区別] ORDER BY による結果 説明
N N

Noel、noël、Noël、noel (順不同)

  • アクセント記号は区別しない

  • 大文字と小文字も区別しない

  • すべての値が同じとみなされる

  • 順序は要素数 4 の集合内でランダム

Y N

Noel、noel (順不同)

次の文字が継続

noël、Noël (順不同)

  • アクセント記号なしが先、アクセント記号ありが後。したがって e の前に ë がくる

  • 大文字と小文字は区別しない。N と n は 2 つの間でランダム

N Y

Noel、Noël (順不同)

次の文字が継続

noël、noel (順不同)

  • 大文字が先、小文字が後。したがって n の前に N がくる

  • アクセント記号は区別しない。e と ë は 2 つの間でランダム

Y Y

Noel

noel

Noël

noël

  • アクセント記号なしが先、アクセント記号ありが後。したがって ë の前に e がくる

  • 大文字が先、小文字が後。したがって n の前に N がくる