4

ここで動作するスクリプトは、常に varchar2 列を varchar2(n char) として宣言します。私には違いは見られず、ただ興味があります。ありがとう!

4

2 に答える 2

6

このリソースに基づいて

Oracle9i 以降では、VARCHAR2 列をバイト数 VARCHAR2(50 BYTE) または文字数 VARCHAR2(50 CHAR) として定義できます。後者は、データベースが変換されて 2 バイト文字セット(そのような列のサイズを編集する必要はありません。デフォルトの測定値 (通常は BYTE) は、nls_length_semantics で設定されます。

Varchar2 (50) として列を作成し、10 バイトしか保存しない場合、Oracle は 10 バイトだけをディスクに保存します。これは、「スペースが必要な場合に備えて」Varchar2 (4000) 列を作成する必要があるという意味ではありません。これは、アプリケーションのパフォーマンスと保守性を低下させる非常に悪い考えです。

于 2013-05-10T02:44:00.013 に答える
3

構文はVARCHAR2(n)VARCHAR2(n BYTE|CHAR)

(n) と (n BYTE) のデフォルトは通常同じです。NLS_LENGTH_SEMANTICS(n CHAR) は、パラメーターを必要な CHAR または BYTE に設定しない限り、(n|BYTE) または (n) と同等ではない場合があります。この設定は、マルチバイト文字を使用する文字セット用です。たとえば、通常はUTF8ではありません。

機能する既存のコードがあるため、変更しないでください。

(n) == (n CHAR) == (n BYTE) またはあなたのシステムだと思います。

于 2013-05-10T02:42:30.217 に答える