2. varchar2的參數有兩個:byte(默認), char
其中varchar2(10 byte)表示為可以最大容納10個字節的字符串。每個漢字占兩個字節,所以最多5個漢字。
varchar2(10 char)表示為可以最大容納10個字的字符串,而不用考慮這個字占用多少個字節,該例則可最大容納10個漢字,或者10個英文字符,但最大不得超過4000個字節。
舉例說明:
1. 創建超過4000字節的varchar2,失敗。
create table test3 (v2 varchar2(4001)),錯誤,原因:ORA-00910: specified length too long for its datatype
2. CREATE TABLE TEST(NAME VARCHAR2(2))
INSERT INTO TEST VALUES('測試')錯誤,原因:ORA-12899: value too large for column "ZBB"."TEST"."NAME" (actual: 6, maximum: 2)
3. CREATE TABLE TEST(NAME VARCHAR2(2 char));
INSERT INTO TEST VALUES('測試'); 成功
INSERT INTO TEST VALUES('abcd') 失敗,原因:ORA-12899: value too large for column "ZBB"."TEST"."NAME" (actual: 4, maximum: 2)
4. create table test3 (v2 varchar2(4000 char));
然后插入4000個漢字,會提示:ora-01461 can bind a long value only for insert into a long column (原因還不詳)
由於使用的是utf8,測試的漢字占用3個字節,所以最多可以插入漢字1334,測試發現插入1335個漢字就會報上面的錯誤。
可以得出不管是漢字還是其他字符,最大不能超過4000字節。