zoukankan      html  css  js  c++  java
  • 报错:列"AGENT_ENTITY_NAME"的值太大(实际值: 60,最大值50) oracle VARCHAR2和NVARCHAR2的区别

    报错如下:"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。

  • 相关阅读:
    DG Standby之REDO传输服务
    .NET缓存初探[转]
    大型门户网站架构分析[转]
    jquery.each读取json数据
    WebService简单验证:SoapHeader
    DIV上中下布局高度自适应的研究[转]
    C#随机数生成(Mersenne Twister)及最佳种子获得方法[保存]
    Yahoo给出的34条网站加速方法[转]
    Asp.net中基于Forms验证的角色验证授权[转]
    获取SWF参数传值
  • 原文地址:https://www.cnblogs.com/zwh0910/p/15787192.html
Copyright © 2011-2022 走看看