VARCHAR2(4000) ABC;
INSERT INTO TABLE_NAME(ABC) VALUES('這裡有1500個漢字...');
-- 錯誤:插入字元過長
測試發現一個漢字佔 3 個位元組,導致超過 4000 位元組限制。
使用字元集 UTF8(或 AL32UTF8)時,中文佔 3 位元組。查看方式:
SQL> SELECT * FROM V$NLS_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET';
-- 結果:AL32UTF8
建議使用 ZHS16GBK 字元集(中文佔 2 位元組)。操作步驟:
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL> ALTER DATABASE OPEN;
SQL> ALTER DATABASE CHARACTER SET ZHS16GBK; -- 或 AL32UTF8
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;
完成後中文長度問題解決。