我支持有以下模式聲明代碼: -VARCHAR2(N BYTE | CHAR)默認 - > CHAR或BYTE
create table sample (
id number Primary key,
username varchar2(100),
);
我擡頭對Oracle文檔& VARCHAR2有兩種申報方式 VARCHAR2(N BYTE)和varchar2(n CHAR),如果我沒有明確指定BYTE或CHAR只是聲明用戶名varchar2(500),那麼將分配500個BYTES還是500個字符?
感謝,
你可能想補充一點,NLS_LENGTH_SEMANTICS設置爲CHAR將*不*克服的4000 **字節的限制**爲VARCHAR列。 –
at [this](https://docs.oracle.com/cd/E24693_01/server.11203/e24448/initparams149.htm)page it says:_Caution: Oracle強烈建議您不要將NLS_LENGTH_SEMANTICS參數設置爲CHAR在實例或服務器參數文件中。這可能會導致許多現有的安裝腳本意外地創建具有字符長度語義的列,導致運行時錯誤,包括緩衝區溢出。正如您所說的,它幾乎總是用於指定字符長度。這真讓我感到灰心。我該怎麼做才知道,我現在需要增加一些列大小。 – mkb
@mkb - 參數也可以在會話級別進行設置。如果您不想將其設置爲實例級別,則在定義對象時在會話級別設置參數。或者在運行Oracle安裝腳本之前,將它在實例級別設置回BYTE。 –