ここで動作するスクリプトは、常に varchar2 列を varchar2(n char) として宣言します。私には違いは見られず、ただ興味があります。ありがとう!
2 に答える
このリソースに基づいて
Oracle9i 以降では、VARCHAR2 列をバイト数 VARCHAR2(50 BYTE) または文字数 VARCHAR2(50 CHAR) として定義できます。後者は、データベースが変換されて 2 バイト文字セット(そのような列のサイズを編集する必要はありません。デフォルトの測定値 (通常は BYTE) は、nls_length_semantics で設定されます。
Varchar2 (50) として列を作成し、10 バイトしか保存しない場合、Oracle は 10 バイトだけをディスクに保存します。これは、「スペースが必要な場合に備えて」Varchar2 (4000) 列を作成する必要があるという意味ではありません。これは、アプリケーションのパフォーマンスと保守性を低下させる非常に悪い考えです。
構文は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) またはあなたのシステムだと思います。