首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 中文長度問題:UTF8 字元集導致 VARCHAR2 容量不足

     編輯:Oracle 資料庫基礎

問題描述

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;

完成後中文長度問題解決。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved