8

Unicode char set オプションを使用して oracle 11g をインストールします。そして、Unicode 文字を CHAR データ型列に挿入できることがわかりました。私の質問は次のとおりです。Unicodeオプションを使用してOracle 11gをインストールする場合、CHARデータ型とNCHARデータ型の違いは何ですか?

4

1 に答える 1

5

主な違いは 2 つあります。

  1. 長さセマンティックのデフォルト。デフォルトでは

    CHAR(30) != NCHAR(30) しかし CHAR(30 CHAR) = NCHAR(30)

    デフォルトの長さセマンティック (NLS_LENGTH_SEMANTICS パラメータで指定) は CHAR に使用されますが、NCHAR には使用されません。このパラメーターのデフォルト値はバイトです。NCHAR の長さは常に文字数です。NCHAR(30) は CHAR(30 CHAR) と同様に常に 30 個の Unicode 文字を保持するため、これは重要です。

  2. AL32UTF8 (データベース文字セットの Unicode のデフォルト) と AL16UTF8 (NLS_NCHAR_CHARACTERSET のデフォルト) は同等ではありません。どちらも可変長の Unicode 文字セットですが、文字の格納方法が異なるため、前者は 1 文字あたり 1、2、3、場合によっては 4 バイトを使用し、後者は 1 文字あたり 2、場合によっては 4 バイトを使用して、2 つのストレージ要件が異なります)。所持しているキャラクターによって獲得できるマイレージが異なります。

    さらに、NCHAR のサポートは多くのクライアント アプリケーションと一部の Oracle コンポーネントで制限されているため、データベース文字セットに AL32UTF8 を使用する場合、Oracle のアドバイスは、CHAR に固執し、NCHAR をまったく使用しないことです。

于 2013-03-22T12:18:40.883 に答える