报错如下:"AGENT_ENTITY_NAME"的值太大(实际值:60,最大值:50)

原因:oracle数据库表中AGENT_ENTITY_NAME字段的长度为50,由于varhcar2单位默认是byte,而一个中文对应按utf8占3个字节的话,20个中文,长度就是60了。

解决办法:将AGENT_ENTITY_NAME字段的类型改为nvarchar2

alter table 表名 modify AGENT_ENTITY_NAME NVARCHAR2(50);

问题解决

oracle VARCHAR2和NVARCHAR2的区别:

VARCHAR2(size type),size最大为4000,type可以是char也可以是byte,不标明type时默认是byte(如:name  VARCHAR2(60))。

 "ID" VARCHAR2(50 BYTE) NOT NULL  PRIMARY KEY,

NVARCHAR2(size),size最大值为2000,单位是字符。

注意:

NVARCHAR2(size),size最大值为2000,单位是字符,而且不管是汉字还是字母。所以nvarchar2类型的数据最多能存放2000个汉字,也最多只能存放2000个字母。并且NVARCHAR2不受数据库字符集的影响。

VARCHAR2最多存放4000字节的数据,最多可以可以存入4000个字母字符,或最多存入2000个汉字(数据库字符集编码是GBK时,varchar2最多能存放2000个汉字,数据库字符集编码是UTF-8时,那就最多只能存放1333个汉字)。

在 ASCII 编码中,一个英文字母字符存储需要1个字节。在 GB 2312 编码或 GBK 编码中,一个汉字字符存储需要2个字节。在UTF-8编码中,一个英文字母字符存储需要1个字节,一个汉字字符储存需要3个字节

中文注意要用NVARCHAR2。

posted on 2022-01-11 11:00  周文豪  阅读(707)  评论(0编辑  收藏  举报