精华内容
下载资源
问答
  • mysql中varcharoracle中的nvarchar2类似。 定义的是字符长度,而非字节长度。容纳的汉字 字母 数字个数就是定义的定义的长度, 与数据库字符集无关而oraclevarchar2定义的是字节长度, 能容纳多少个汉字和...

    mysql中varchar与oracle中的nvarchar2类似。 定义的是字符长度,而非字节长度。容纳的汉字 字母 数字个数就是定义的定义的长度, 与数据库字符集无关

    而oracle中 varchar2定义的是字节长度, 能容纳多少个汉字和数据库的字符集有关。




    展开全文
  • Mysql 中 varchar 比较 Oracle varchar2

    千次阅读 2016-05-23 14:14:39
    Mysql 中 varchar 比较 Oracle varchar2 现在新项目上来,我做数据库开发的第一把手,在研究mysql,这里是小计,顺便记录一下,还有一个问题就是,mysql中没有varchar2 而是varcharoracle中是varchar2是varcahr2的...

    Mysql 中 varchar 比较 Oracle varchar2

    现在新项目上来,我做数据库开发的第一把手,在研究mysql,这里是小计,顺便记录一下,还有一个问题就是,mysql中没有varchar2 而是varchar而oracle中是varchar2是varcahr2的升级版。

    MySQL和oracle做数据同步。其中表的一个字段在mysql中设置为varchar(6),Oracle中为varchar2(6)
    但mysql中能正常存放的数据同步到oracle中却抱ORA-12899: value too large for column错误。
    这是为什么呢?


    mysql中varchar(6)代表可以存放6个汉字,6个字母,或6个数字。
    oracle中varchar2(6)代表可以中存放6个字节。即oracle中varchar2的长度代表字节数而不是字符数。
    mysql中一个汉字占三个字节,Oracle中一个汉字占两个字节。

    虽然mysql varchar 和orache varchar2中字段设置相同的长度,但oracle中却存放不下。


    1.1. Mysql中新建表tmysql
    CREATE TABLE tmysql (
      name varchar(6) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf


    1.2.插入6个汉字

    insert into t values('北京蒙迪艾尔');


    1.3.可以成功插入,并查询出结果

    mysql> select name ,length(name)  ,char_length(name) 
    from tmysql;
    +--------------+--------------+-------------------+
    | name         | length(name) | char_length(name) |
    +--------------+--------------+-------------------+
    | 北京蒙迪艾尔 |           18 |                 6 |
    +--------------+--------------+-------------------+
    1 row in set


    2.1. Oracle中新建表toracle

    Oracle:

    SQL> create table toracle
      2  (
      3    NAME VARCHAR2(6)
      4  );

    Table created

    2.3 在oracle的varchar2(6)中同样插入6个汉字

    SQL> insert into toracle values('北京蒙迪艾尔');
    insert into toracle values('北京蒙迪艾尔')
    ORA-12899: value too large for column "SCOTT"."TORACLE"."NAME" (actual: 12, maximum: 6)

    -- 在oracle中varchar2(6)中插入6个汉字失败

    SQL> select length('北京蒙迪艾尔') from dual;
    LENGTH('北京蒙迪艾尔')
    ----------------------
                        6
    SQL> insert into toracle values('蒙迪艾');
    1 row inserted

    SQL> select name ,length(name) from toracle;
    NAME   LENGTH(NAME)
    ------ ------------
    蒙迪艾            3   
    SQL> insert into toracle values('蒙迪艾尔');
    insert into toracle values('蒙迪艾尔')
    ORA-12899: value too large for column "SCOTT"."TORACLE"."NAME" (actual: 8, maximum: 6)


    如果想让mysql varchar中存放的汉字可以在orale中varchar2中存放的下。

    (因为mysql中一个汉字占三个字节,oracle中一个汉字占两个字节)。 

    要存放4个汉字,mysql每1长度代表一个字符,
    应该是 varchar(4) ;Oracle 每1长度代表一个字节的话,应该是 varchar2(8),算下来 Oracle的长度应该保持为Mysql的2倍才对


    参考:

    http://blog.csdn.net/lwei_998/article/details/7728173


    展开全文
  • Mysql varchar VS Oracle varchar2

    万次阅读 2012-07-09 10:25:35
    其中表的一个字段在mysql中设置为varchar(6),Oracle中为varchar2(6) 但mysql中能正常存放的数据同步到oracle中却抱ORA-12899: value too large for column错误。 这是为什么呢? mysql中varchar(6)代表可以存放6...

    mysql和oracle做数据同步。其中表的一个字段在mysql中设置为varchar(6),Oracle中为varchar2(6)
    但mysql中能正常存放的数据同步到oracle中却抱ORA-12899: value too large for column错误。
    这是为什么呢?

    mysql中varchar(6)代表可以存放6个汉字,6个字母,或6个数字。
    oracle中varchar2(6)代表可以中存放6个字节。即oracle中varchar2的长度代表字节数而不是字符数。
    mysql中一个汉字占三个字节,Oracle中一个汉字占两个字节。

    虽然mysql varchar 和orache varchar2中字段设置相同的长度,但oracle中却存放不下。

     


    1.1. Mysql中新建表tmysql
    CREATE TABLE tmysql (
      name varchar(6) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8

     

    1.2.插入6个汉字

    insert into t values('北京蒙迪艾尔');

     

    1.3.可以成功插入,并查询出结果

    mysql> select name ,length(name)  ,char_length(name)
    from tmysql;
    +--------------+--------------+-------------------+
    | name         | length(name) | char_length(name) |
    +--------------+--------------+-------------------+
    | 北京蒙迪艾尔 |           18 |                 6 |
    +--------------+--------------+-------------------+
    1 row in set

     

    2.1. Oracle中新建表toracle

    Oracle:

    SQL> create table toracle
      2  (
      3    NAME VARCHAR2(6)
      4  );

    Table created

    2.3 在oracle的varchar2(6)中同样插入6个汉字

    SQL> insert into toracle values('北京蒙迪艾尔');
    insert into toracle values('北京蒙迪艾尔')
    ORA-12899: value too large for column "SCOTT"."TORACLE"."NAME" (actual: 12, maximum: 6)

    -- 在oracle中varchar2(6)中插入6个汉字失败

    SQL> select length('北京蒙迪艾尔') from dual;
    LENGTH('北京蒙迪艾尔')
    ----------------------
                        6
    SQL> insert into toracle values('蒙迪艾');
    1 row inserted

    SQL> select name ,length(name) from toracle;
    NAME   LENGTH(NAME)
    ------ ------------
    蒙迪艾            3  
                        
    SQL> insert into toracle values('蒙迪艾尔');
    insert into toracle values('蒙迪艾尔')
    ORA-12899: value too large for column "SCOTT"."TORACLE"."NAME" (actual: 8, maximum: 6)


    如果想让mysql varchar中存放的汉字可以在orale中varchar2中存放的下。那么oracle中设置varchar2的长度应该为mysql中varchar的1.5倍。
    (因为mysql中一个汉字占三个字节,oracle中一个汉字占两个字节)。                 

    展开全文
  • 1.错误提示: mysql的Data truncation: Data too long for column 'path' at row 1 ... varchar(10) ——>varchar(20)  alter table `cms_activity_test` convert to character set gbk collate gbk_chi...

    1.错误提示:

         mysql的Data truncation: Data too long for column 'path' at row 1

    错误原因:

       1.字段过长而导致出错的,

            2. 可能是因为数据库里的表设置的字符集不相同。

    解决办法:

      varchar(10) ——>varchar(20)

      alter table `cms_activity_test` convert to character set gbk collate gbk_chinese_ci;(单独修改指定表的字符集)

     

    其他参考:

    mysql和oracle做数据同步。其中表的一个字段在mysql中设置为varchar(6),Oracle中为varchar2(6)
    但mysql中能正常存放的数据同步到oracle中却抱ORA-12899: value too large for column错误。
    这是为什么呢?

    mysql中varchar(6)代表可以存放6个汉字,6个字母,或6个数字。
    oracle中varchar2(6)代表可以中存放6个字节。即oracle中varchar2的长度代表字节数而不是字符数。
    mysql中一个汉字占三个字节,Oracle中一个汉字占两个字节。

    虽然mysql varchar 和orache varchar2中字段设置相同的长度,但oracle中却存放不下

    SQL> insert into toracle values('北京蒙迪艾尔');
    insert into toracle values('北京蒙迪艾尔')
    ORA-12899: value too large for column "SCOTT"."TORACLE"."NAME" (actual: 12, maximum: 6)

    -- 在oracle中varchar2(6)中插入6个汉字失败

    1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,数字,英文字符等都是一个字节;
    2.VARCHAR2把空串等同于null处理,而varchar仍按照空串处理;
    3.VARCHAR2字符要用几个字节存储,要看数据库使用的字符集,
    大部分情况下建议使用varchar2类型,可以保证更好的兼容性。
    展开全文
  • oraclevarcharvarchar2区别

    千次阅读 2018-08-14 08:11:23
    但是:varchar2是oracle提供的独特的数据类型oracle保证在任何版本中该数据类型向上和向下兼容但不保证varchar,这是因为varchar是标准sql提供的数据类型有可能随着sql标准的变化而改变 char对于不够位数的用空...
  • oracle 11g varchar/varchar2

    千次阅读 2018-06-02 20:28:59
    以前学oracle的时候,用varchar比较多,今天在oracle 11g中,发现用的都是varchar2,例如我这样创建表:可以看到,如果使用了varchar,也会自动转为varchar2。
  • mysql varchar类型和oraclevarchar2类型 1. 案例说明 mysql的varchar(4000)同步到 oracle12c后被转换为varchar2(4000),当源端的值到5000以后,oracle这边就装不进去了。 2. 处理步骤 只得采用下列步骤更改...
  • oraclevarcharvarchar2区别

    万次阅读 2019-07-02 16:40:48
    varchar2是oracle提供的独有的数据类型。 2.varchar对于汉字占两个字节,对于英文是一个字节,占的内存小,varchar2都是占两个字节。 3.varchar对空串不处理,varchar2将空串当做null来处理。 4.varchar存放固定...
  • 这两个类型在oracle中都表示字符类型。 两者联系: ...varchar2是oracle用来替代varchar的类型,适用于oracle任何版本 (oraclevarchar2代替varchar,原因之一在于varchar是sql标准,可能随着sql的发
  • mysql中varcharoraclevarchar2区别

    千次阅读 2019-01-03 15:12:23
    二、mysql中varcharoraclevarchar2 一)MySql 5.0 以上的版本: 1、一个汉字占多少长度与编码有关: UTF-8:一个汉字 = 3个字节,英文是一个字节 GBK: 一个汉字 = 2个字节,英文是一个字节 2、...
  • Oracle varchar 字段排序问题

    千次阅读 2014-09-28 10:10:05
    Oracle varchar 字段排序问题
  • Oracle varchar2类型

    千次阅读 2019-02-15 16:33:11
    oraclevarchar2的最大长度为4000 bytes,即varchar2(4000),最多能储存2000个汉子或4000位的数字字母。当储存值超过时可以使用clob(Character Large Object)或blob(Binary Large Object)类型。 ...
  • Oracle之Char VarChar VarChar2 http://www.cnblogs.com/Stwo/archive/2011/09/01/2161616.html varchar2 是oracle特有的,最大长度为4000 varchar 可以与 其它数据库兼容,最大长度为2000 oracle中没有...
  • Oraclevarcharvarchar2的区别

    千次阅读 2013-08-27 17:51:41
    Oraclevarcharvarchar2的区别   1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,数字,英文字符等都是一个字节; 2.varchar2把空串等同于null处理,而varchar仍按照...
  • 目录 1简介... 1 2 准备...... 2.1 环境说明......3 安装......4 配置......5 使用......5.1 验证实验......6.1 varchar2长度与字符集... 5 6.2 nvarchar2存汉字... 5 7 总结... 6 Mysql UTF8 varchar与Oracl...
  • Oraclevarcharvarchar2

    千次阅读 2016-09-12 11:46:58
    CHAR、VARCHARVARCHAR2区别: 1.CHAR的长度是固定的,而VARCHAR2的长度是可以变化的, 比如,存储字符串“abc",对于CHAR (20),表示你存储的字符将占20个字节(包括17个空字符),而同样的VARCHAR2 (20)则只占用3...
  • oracle 11g nvarchar2 varchar2 varchar对比

    千次阅读 2018-01-11 15:54:59
    oracle11g sql对比 nvarchar不支持,直接报错 select cast('二一' as nvarchar2(4)) from dual; select cast('二一' as varchar2(4)) from dual; select cast('二一' as varchar2(6)) from dual; select cast...
  • varchar2转number 详解 Oracle

    千次阅读 2019-03-14 11:27:10
    varchar2转number 详解 Oracle 1.使用转换方法: to_number(‘12.50’) 2.方法1存在一个问题,如果转换一个可能为null的varchar2字段值,转换之后结果依然为null,而null与任何值相加结果都为null,这样可能导致查询...
  • oracle char,varchar,varchar2的区别和使用方法 非本人总结,但是说的挺好的! 欢迎下载
  • Oracle varchar2 length 分析

    千次阅读 2016-02-12 16:16:00
    Oracle varchar2 length 分析Code 1DECLARE V_OUT VARCHAR2(32767); BEGIN V_OUT := RPAD('T', 4001, 'M'); EXECUTE IMMEDIATE 'insert into test_varchar VALUES(:1)' using V_OUT; END;Code 2DECLARE
  • ORACLE VARCHAR2转化为NUMBER
  • varchar2,Oracle还要进行语法分析,这个字段是多少位的,所以慢一些。相对于上千万的记录来说。一般的项目 没什么区别,随便用。 您可能感兴趣的文章:oracle to_char函数将number转成stringOracle to_char函数的...
  • oraclevarchar字段排序 oraclevarchar字段排序需要转换数据类型 sql select * from (select mobnum,servicecode,orderid from table1 where orderid > 100 order by cast(orderid as int)) where rownum <= 100
  • Oracle varchar2类型排序

    千次阅读 2017-03-20 11:57:51
    建立的varchar2类型的字段,存储的数字,排序时发现不是按数字大小进行排序,查询oracle函数,发现排序时可将varchar字段强制转换为数字进行排序,如下用法: order by cast(字段 as int)
  • Oraclevarchar2 varchar2(50) 表示该字段bai类型为varchar2类型,长度为50,可以存单字节字符50个,du如zhi字母、数dao字等,可以存储双字节字符25个,如汉字。 varchar2是Oracle中特有的一种数据库类型 varchar2...
  • 1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,数字,英文字符等都是一个字节; 2.VARCHAR2把空串等同于null处理,而varchar仍按照空串处理; 3.VARCHAR2字符要用几个字节...
  • create or replace function getlong( p_tname in varchar2,p_cname in varchar2,p_con in varchar2, p_value in varchar2 ) return varchar2 as l_cursor integer default dbms_sql.open_cursor; l_n numbe...
  • ORACLE VARCHAR 排序问题

    千次阅读 2011-08-02 19:18:53
    参考文献:http://chengjunflying.iteye.com/blog/698505 在oracle中,如果要对varchar类型的字段进行order by操作,那么首先必须得将他们转化成数字类型,比如int类型,这就需要用到cast关键字。 例子 SELECT
  • 1.varchar2是oracle提供的独特的数据类型 oracle保证在任何版本中该数据类型向上和向下兼容 但不保证varchar,这是因为varchar是标准sql提供的数据类型 有可能随着sql标准的变化而改变。2.char对于不够位数的用空格...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 201,364
精华内容 80,545
关键字:

nvarchar2oracle