• 検索結果がありません。

NLS_LENGTH_SEMANTICS

デフォルトでは、文字データ型CHARおよびVARCHAR2は、文字単位ではなくバイト単位で 指定します。したがって、表定義でCHAR(20)と指定すると、文字データを格納するために 20バイトが割り当てられます。

データベース・キャラクタ・セットでシングルバイト文字コード体系が使用されている場合 は、文字数がバイト数と同じであるため、このような指定は適切に処理されます。データ ベース・キャラクタ・セットでマルチバイト文字コード体系が使用されている場合は、1文 パラメータ・タイプ

パラメータ・タイプパラメータ・タイプ

パラメータ・タイプ: 文字列 パラメータの有効範囲

パラメータの有効範囲パラメータの有効範囲

パラメータの有効範囲: 初期化パラメータ、ALTER SESSION、ALTER SYSTEM デフォルト値

デフォルト値デフォルト値

デフォルト値: FALSE 値の範囲値の範囲値の範囲

値の範囲: TRUE、FALSE

関連項目関連項目関連項目

関連項目: キャラクタ・セット変換中のデータ消失の詳細は、第10章

「キャラクタ・セットの移行」を参照してください。

パラメータ・タイプ パラメータ・タイプパラメータ・タイプ

パラメータ・タイプ: 文字列 パラメータの有効範囲

パラメータの有効範囲パラメータの有効範囲

パラメータの有効範囲: 動的、初期化パラメータ、ALTER SESSIONおよびALTER SYSTEM

デフォルト値 デフォルト値デフォルト値

デフォルト値: BYTE 値の範囲

値の範囲値の範囲

値の範囲: BYTE | CHAR

長さセマンティクス

字が1バイト以上で構成される場合があるため、バイト数は文字数とは異なります。した がって、特定の文字数に対して予測される最大バイト数を見込んで、列幅を慎重に選択する 必要があります。この問題は、列サイズの定義時にキャラクタ・セマンティクスに切り替え ることで回避できます。

NLS_LENGTH_SEMANTICSによって、CHAR、VARCHAR2およびLONGの各列をバイト・セ マンティクスまたはキャラクタ・セマンティクスのいずれかを使用して作成できます。

NCHAR、NVARCHAR2、CLOBおよびNCLOBの各列は、常に文字ベースです。既存の列は、

影響を受けません。

既存のアプリケーションとの互換性を維持するためには、バイト・セマンティクスを使用す る必要があります。

NLS_LENGTH_SEMANTICSは、SYSおよびSYSTEMの表には適用されません。データ・ディ クショナリでは、常にバイト・セマンティクスが使用されます。

関連項目関連項目関連項目 関連項目:

2-11ページ「長さセマンティクス」

長さセマンティクスの詳細は、『Oracle9iデータベース概要』を参照し てください。

4

言語ソート 言語ソート 言語ソート 言語ソート

この章では、Oracle環境での文字のソート方法について説明します。この章の内容は、次の とおりです。

Oracleのソート機能の概要

バイナリ・ソートの使用

言語ソートの使用

言語ソート機能

言語索引の使用

関数索引を使用した大/小文字区別なしの検索パフォーマンスの改善

汎用ベース文字検索の実行

Oracleのソート機能の概要

Oracle のソート機能の概要 のソート機能の概要 のソート機能の概要 のソート機能の概要

ソート順序は言語によって異なります。さらに、同じアルファベットを使用している文化ま たは国の間でも、ワードのソート方法が異なる場合があります。たとえば、デンマーク語の 文字Æは、Zの後にきます。また、YとÜは同じ文字の変形とみなされます。

ソート順序には、大/小文字区別の有無を指定できます。ケースケースは、大文字であるか小文字ケースケース であるかの条件を指します。たとえば、ラテン・アルファベットのAは、小文字の絵文字a の大文字です。

ソート順序では、発音区別記号を無視するか考慮するかを指定できます。発音区別記号発音区別記号は、発音区別記号発音区別記号 文字または文字列の上または下にある記号で、それが付いていない場合の文字とは発音が異 なることを示します。たとえば、façadeの場合、セディラ(,)は発音区別記号です。セ ディラが付いている場合は、cの発音が変化します。

表音的なソート順序や、文字の外観に基づいたソート順序も指定できます。たとえば、東南 アジアの表意文字の場合は、画数に基づいたソート順序を指定できます。ソート上の一般的 な問題となるものに、結合文字があります。たとえば、伝統的なスペイン語のchは1つの 独立した文字であり、ソート順序ではcの後にきます。つまり、正しいソート順序は、

cerveza、colorado、cheremoyaのようになります。したがって、文字cは、次にくる文字が

hであるかどうかが確認されるまで、ソートされません。

Oracleには、次のタイプのソートが用意されています。

バイナリ・ソート

単一言語ソート

多言語ソート

単一言語に応じた正確なソートに加えて、多言語ISO規格(ISO-14651)に準拠したソート が実現できます。この規格は、複数言語を同時に処理するように設計されています。

バイナリ・ソートの使用 バイナリ・ソートの使用 バイナリ・ソートの使用 バイナリ・ソートの使用

文字データをソートする方法の1つは、文字コード体系によって定義された文字の数値に基 づいています。このようなソートをバイナリ・ソートバイナリ・ソートバイナリ・ソートと呼びます。バイナリ・ソート バイナリ・ソートは最も 高速なソート・タイプであり、ASCIIやEBCDICの規格では、文字A~Zを昇順の数値で 定義しているため、英語のアルファベットについては正しいソート結果が得られます。

他の言語で使用されている文字が存在すると、通常、バイナリ・ソートでは正しい結果が得 られません。たとえば、文字コード体系でÄの数値がBの数値より高い場合、昇順のORDER BY問合せでは、ABC、ABZ、BCD、ÄBCの順で文字列が戻ります。表意文字を使用するアジ ア言語の場合、通常、バイナリ・ソートに言語的な意味はありません。

言語ソートの使用 言語ソートの使用 言語ソートの使用 言語ソートの使用

文字のアルファベット順に一致するソート基準を得るには、文字コード体系内の数値に依存 せずに文字をソートする別のソート方法を使用する必要があります。この方法を言語ソート言語ソート言語ソート言語ソート と呼びます。言語ソートでは、各文字を、言語的に適切な文字順序を反映した数値に置換す ることによって、ソート操作を行います。

Oracleでは、単一言語ソートと多言語ソートの2種類の言語ソートを提供しています。

この項の内容は、次のとおりです。

単一言語ソート

多言語ソート

多言語ソート・レベル

言語ソートの例

単一言語ソート 単一言語ソート 単一言語ソート 単一言語ソート

単一言語ソートの場合、文字列は2つの手順で比較されます。最初の手順では、メジャー値 テーブルにある文字列全体のメジャー値が比較されます。通常、同じ外観の文字には、同じ メジャー値があります。第2の手順では、マイナー値テーブルにあるマイナー値が比較され ます。メジャー値とマイナー値はOracleによって定義されます。 Oracleでは、マイナー値が 異なる同じメジャー値を使用して、発音区別記号を持つ文字と大/小文字区別を定義しま す。

各メジャー・テーブル・エントリには、1文字のUnicodeコード・ポイントコード・ポイントとメジャー値がコード・ポイントコード・ポイント 含まれています。 Unicodeコード・ポイントは、1文字を表す16ビットのバイナリ値です。

注意注意注意

注意: ASCII規格では、大文字はすべて小文字の前にきます。逆に、

EBCDIC規格では、小文字はすべて大文字の前にきます。

言語ソートの使用

表4-1に、a、A、ä、Äおよびbのソートに使用するサンプルの値を示します。

多言語ソート 多言語ソート 多言語ソート 多言語ソート

Oracle9i には多言語ソートが用意されているため、複数言語のデータを1つのソートとして

ソートできます。この機能は、複雑なソート・ルールや多言語データベースを持つ地域また は言語に有効です。さらに、Oracle9i では、従来のリリースで定義されたすべてのソート順 序をサポートしています。

アジア諸国の言語データや多言語データに対しては、ISO 14651規格とUnicode 3.1規格に 基づいたソート・メカニズムが用意されています。漢字は、画数、ピンイン(中国語の発音 記号)または部首で順序付けされます。

また、多言語ソートでは、標準的な同値化や補助文字も処理できます。標準的な同値化標準的な同値化標準的な同値化標準的な同値化は、

文字間または文字列間での基本的な同値化です。たとえば、çはcと,の組合せと同じです。

補助文字補助文字補助文字

補助文字はUnicode 3.1でのユーザー定義文字または事前定義済みの文字であり、特定の コード範囲内の2つのコード・ポイントを必要とします。 1つの多言語ソートに最大110万 のコード・ポイントを定義できます。

たとえば、Oracle9iではフランス語の単一言語ソート(FRENCH)がサポートされています が、フランス語の多言語ソート(FRENCH_M)を指定できます。_Mは、多言語ソートに対す

るISO 14651規格を表します。このソート順では、GENERIC_Mソート順に基づき、発音区別

記号を右から左へとソートできます。したがって、表に多言語データが格納されている場合 は、多言語ソートの使用をお薦めします。表にフランス語のみが含まれている場合は、フラ ンス語の単一言語ソートを使用する方が、メモリー使用量が少ないため、パフォーマンスは 向上します。メモリー使用量が少ないのは、フランス語の単一言語ソートの方が、フランス 語の多言語ソートよりも定義されている文字が少ないためです。ソートの有効範囲とパ フォーマンスの間には、トレードオフがあります。

表表表

表 4-1 文字のサンプルとそのソートのメジャー値とマイナー値文字のサンプルとそのソートのメジャー値とマイナー値文字のサンプルとそのソートのメジャー値とマイナー値文字のサンプルとそのソートのメジャー値とマイナー値 絵文字

絵文字絵文字

絵文字 メジャー値メジャー値メジャー値メジャー値 マイナー値マイナー値マイナー値マイナー値

a 15 5

A 15 10

ä 15 15

Ä 15 20

b 20 5

関連項目 関連項目関連項目

関連項目: 5-2ページ「Unicodeの概要」

関連したドキュメント