Unicode char set オプションを使用して oracle 11g をインストールします。そして、Unicode 文字を CHAR データ型列に挿入できることがわかりました。私の質問は次のとおりです。Unicodeオプションを使用してOracle 11gをインストールする場合、CHARデータ型とNCHARデータ型の違いは何ですか?
1 に答える
主な違いは 2 つあります。
長さセマンティックのデフォルト。デフォルトでは
CHAR(30) != NCHAR(30)
しかしCHAR(30 CHAR) = NCHAR(30)
。デフォルトの長さセマンティック (NLS_LENGTH_SEMANTICS パラメータで指定) は CHAR に使用されますが、NCHAR には使用されません。このパラメーターのデフォルト値はバイトです。NCHAR の長さは常に文字数です。NCHAR(30) は CHAR(30 CHAR) と同様に常に 30 個の Unicode 文字を保持するため、これは重要です。
AL32UTF8 (データベース文字セットの Unicode のデフォルト) と AL16UTF8 (NLS_NCHAR_CHARACTERSET のデフォルト) は同等ではありません。どちらも可変長の Unicode 文字セットですが、文字の格納方法が異なるため、前者は 1 文字あたり 1、2、3、場合によっては 4 バイトを使用し、後者は 1 文字あたり 2、場合によっては 4 バイトを使用して、2 つのストレージ要件が異なります)。所持しているキャラクターによって獲得できるマイレージが異なります。
さらに、NCHAR のサポートは多くのクライアント アプリケーションと一部の Oracle コンポーネントで制限されているため、データベース文字セットに AL32UTF8 を使用する場合、Oracle のアドバイスは、CHAR に固執し、NCHAR をまったく使用しないことです。