1. 查看当前数据库的编码
Oracle 11g 中 VARCHAR 类型字段最大长度为 4000字符,
如果使用编码:ZHS16GBK(中文版WinServer2008系统默认编码),一个汉字占用2个字节(亲测正确),也就是说 VARCAHR 最大是 2000个汉字。
如果使用编码:AL32UTF8或UTF8,则一个汉字占用三到四个字节。
如何判断一个汉字占用几个字节?
SELECT LENGTH('您好') FROM DUAL;
如何查看数据库编码?
SELECT * FROM v$nls_parameters WHERE PARAMETER='NLS_CHARACTERSET';
2.更改VARCHAR字段
有时,随着业务发展,早期设计时的 VARCHAR(4000)已经不满足需要了。这时候需要使用 CLOB 数据类型来存储 没有上限的文本数据。
更改步骤:(更改有风险)
0. 最重要的:导出备份当前表的数据,有备无患。
1. 新建 CLOB 类型字段,任意起名。
2. 将原字段名字改为 其它名字,将新字段 改为原字段的名字,保存。(注意:二者同时改,一并保存)
3. 使用 update yourtable yt set yt.newfield = yt.oldfield 将原字段的内容都赋值给新字段。
这里有个风险,就是在修改数据库名字的时候,用户如果插入了数据,会发生意想不到的错误。(其实可以推测,我懒得去想了)
本方法仅适用于用户使用不频繁的小信息系统,内容仅供参考,风险自担。
参考资料:ORACLE数据库汉字占几个字节问题