gtag

2010年12月14日 星期二

老問題:Varchar2的長度怎麼計算可以塞入多少中文字?

如果中文字要放入VARCHAR2的欄位,在規劃表格時,需要計算一下長度,避免在INSERT資料時,造成錯誤。

以下有個簡單的例子,提供各位重建現場:

CREATE TABLE TEST (A varchar2(10 char),b varchar2(10 BYTE),c varchar2(10));
INSERT INTO TEST VALUES('一二三四五六七八九十','一二三B','一二三C');
SELECT * FROM TEST;
DROP TABLE TEST PURGE;

以上的我自己做了一些測試,INSERT的語句一定可以新增,如果再多一個中文字就出現下列錯誤,在BYTE的計算方式,因為UNICODE的中文字一個字算3個BYTE,所以10BYTE頂多只能同時放三個中文字跟一個英文字:

ORA-12899: value too large for column "SYSTEM"."TEST"."A" (actual: 11, maximum: 10)

結論呢~如同下方所述:

varchar2(10 char)<=可以同時塞10個中文字
varchar2(10 byte)<=可以同時塞3個中文字,一個英文字
varchar2(10)<=可以同時塞3個中文字,一個英文字

提供各位參考,小心計算。

沒有留言:

張貼留言