SQL Anywhere 照合アルゴリズムは、シングルバイト文字とマルチバイト文字の実用的な比較、ソート、大文字小文字変換を提供します。このアルゴリズムは、必要とする領域が少なく、高速です。インデックスなどの文字列は、マッピング後も元の文字列と長さが同じです。比較、ソート、大文字小文字変換のマッピングでは、文字列の各バイト値ごとの簡単なテーブル・ルックアップを使用しています。
SACA は、初期の Watcom SQL 以来、SQL Anywhere に提供され続けています。
典型的なシングルバイト文字セットの照合では、各文字のアクセント記号付きとアクセント記号なしのあらゆる形が同じ値にマッピングされており、照合ではアクセント記号は区別されません。同じ文字のアクセント記号付き形とアクセント記号なし形は同じとみなされ、ソートされると隣り合わせになります。
この照合では、アクセント記号を維持したまま、大文字と小文字が変換されます。
マルチバイト文字セットの場合、リード・バイトが 256 個の異なる値にマッピングされています。フォロー・バイトはバイナリ値として比較されます。
マルチバイト文字セットのほとんどの照合では、文字セット・エンコードにより、文字はリード・バイトによって識別される 256 バイト単位のページにグループ化されるので、このマッピング方法で実用的なソート結果が得られます。これらのページと各ページに含まれる文字は、該当する文字セットとして合理的な順序で配置されています。通常、この照合では文字セットにおけるページの順序 (リード・バイト) が保持されます。ページによっては、他の特徴に基づいてソートされます。たとえば、日本語コード・ページ 932 用の 932JPN 照合では、全角文字 (漢字) と半角文字 (カタカナ) をグループ分けしています。
大文字小文字変換は、7 ビットの英文字についてのみ提供されています。
UTF-8 はマルチバイト文字セットです。各文字は 1 ~ 4 バイトで構成されます。SQL Anywhere では、UTF-8 文字のソート用に UTF8BIN 照合を提供しています。
UTF8BIN では、リード・バイトが 256 の異なる値にマッピングされており、フォロー・バイトはバイナリ値として比較されます。UTF-8 の文字表現方法と 256 というマッピングの数的制限に起因して、同じ文字のアクセント記号付き形とアクセント記号なし形など、関連文字をグループ化できません。ソートの基準は基本的にバイナリです。
大文字小文字変換は、7 ビットの英文字についてのみサポートされています。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |