oracle中的varchar2存放汉字的问题总结
2015-07-20 17:56
477 查看
来源:http://blog.chinaunix.net/uid-7240278-id-3209954.html
1. varchar2最大长度为4000字节。
2. varchar2的参数有两个:byte(默认), char
其中varchar2(10 byte)表示为可以最大容纳10个字节的字符串。
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字节。
1. varchar2最大长度为4000字节。
2. varchar2的参数有两个:byte(默认), char
其中varchar2(10 byte)表示为可以最大容纳10个字节的字符串。
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字节。
相关文章推荐
- 【Oracle 集群】Oracle 11G RAC教程之集群安装(七)
- CentOS(五)--Oracle安装
- oracle创建表空间和用户
- ORACLE 归档日志打开关闭方法
- oracle实例名,服务名等概念区别与联系
- row_number() over (partition by....order by...)用法
- Oracle循环语句
- oracle 相关语句
- Oracle随机函数之dbms_random使用详解
- oracle sql 内连接 左外连接 右外连接 全外连接
- Oracle pl/sql导入sql文件,插入更新数据,中文乱码问题解决方案
- oracle实例内存(SGA和PGA)调整
- 转:Hbase与Oracle比较(列式数据库与行式数据库)
- [Oracle 10g会有的一个错误]ORA-00988: 口令缺失或无效
- Oracle之Check约束实例详解
- ORACLE学习笔记
- Oracle 基础篇 --- 聚簇因子(clustering_factor)
- Oracle中数据类型number(m,n)
- oracle sql 查询前十条数据
- oracle用户创建以及权限的设置