RT,XIEXIE~~~~

解决方案 »

  1.   

    区别在于 varchar2 把字符的长度和汉字的长度一样,都是2,还有最长也只有4000
      

  2.   

    哦,这样呀,就是相当于SQLserver里的
    nvarcher()和varchar一样
      

  3.   

    楼上的,错解了
    The VARCHAR datatype is currently synonymous with the VARCHAR2 datatype.
    However, in a future version of Oracle, VARCHAR might store variable-length
    character strings compared with different comparison semantics. Therefore,
    to avoid possible changes in behavior you should always use the VARCHAR2
    datatype to store variable-length character strings.从ORACLE8.16的文档上看好象没有区别
    Currently, VARCHAR is synonymous with VARCHAR2. However, in future releases of PL/SQL, to accommodate emerging SQL standards, VARCHAR might become a separate datatype with different comparison semantics. So, it is a good idea to use VARCHAR2 rather than VARCHARvarchar2是oracle提供的独特的数据类型
    oracle保证在任何版本中该数据类型向上和向下兼容
    但不保证varchar,这是因为varchar是标准sql提供的数据类型
    有可能随着sql标准的变化而改变
      

  4.   

    再问一下:
    char(n),varchar(n),varchar2(n)中的 n
    和length(string)返回的值是字节数还是字符数??
      

  5.   

    char(n),varchar(n),varchar2(n)是字节数
    length(string)返回的是string的长度,一个汉字也就一个长度,所以是字符数
    lengthb()返回的是字节数。
      

  6.   

    char(n),varchar(n),varchar2(n)是字节数?
      

  7.   

    char(n),varchar(n),varchar2(n)是字节数,字母占一个字节,汉字占二个或三个字节.
    char(n),varchar(n),varchar2(n)是字符数,所有都占二个或三个字节.
    length(string)求字符长度
    lengthB(string)求字节长度
      

  8.   

    不好意思,上面错了
    char(n),varchar(n),varchar2(n)是字节数,字母占一个字节,汉字占二个或三个字节.
    nchar(n),nvarchar(n),nvarchar2(n)是字符数,所有都占二个或三个字节.
    length(string)求字符长度
    lengthB(string)求字节长度
      

  9.   

    oracle中char和varchar(2)的区别: 
    1.CHAR的长度是固定的,而VARCHAR2的长度是可以变化的, 比如,存储字符串“abc",对于CHAR (20),表示你存储的字符将占20个字节(包括17个空字符),而同样的VARCHAR2 (20)则只占用3个字节的长度,20只是最大值,当你存储的字符小于20时,按实际长度存储。 
    2.CHAR的效率比VARCHAR2的效率稍高。 
    3.目前VARCHAR是VARCHAR2的同义词。工业标准的VARCHAR类型可以存储空字符串,但是oracle不这样做,尽管它保留以后这样做的权利。Oracle自己开发了一个数据类型VARCHAR2,这个类型不是一个标准的VARCHAR,它将在数据库中varchar列可以存储空字符串的特性改为存储NULL值。如果你想有向后兼容的能力,Oracle建议使用VARCHAR2而不是VARCHAR。 
      
    何时该用CHAR,何时该用varchar2? 
               CHAR与VARCHAR2是一对矛盾的统一体,两者是互补的关系. 
    VARCHAR2比CHAR节省空间,在效率上比CHAR会稍微差一些,即要想获得效率,就必须牺牲一定的空间,这也就是我们在数据库设计上常说的‘以空间换效率’。 
       VARCHAR2虽然比CHAR节省空间,但是如果一个VARCHAR2列经常被修改,而且每次被修改的数据的长度不同,这会引起‘行迁移’(Row Migration)现象,而这造成多余的I/O,是数据库设计和调整中要尽力避免的,在这种情况下用CHAR代替VARCHAR2会更好一些。
      

  10.   

    另外varchar2还支持国际化的数据的保存,所以数据库设计时最好都使用varchar2代替varchar类型。
      

  11.   

    只知道varchar2长度是可变的。 应该存储上会更好点。其他的就不太清楚了
      

  12.   

    varchar2还是nvarchar2还和数据库的字符集有关,在oracle安装时选择zh gbk16 时,因为编码本身就是双字节,所以最大不是4k而是2k.
      

  13.   

    其实还有个比较微妙的区别……就是varchar2不允许空串,如果你输入空串,那么这个值会被自动转为null。但是varchar是可以的,可惜oracle不支持。
      

  14.   

    varchar是ansi sql的标准类型,varchar2是oracle自己弄出来的新类型,oracle保证varchar2类型有所有版本向下兼容,varchar类型就不一定,因为ansi标准可能会变, 如果是考虑效率,varchar2应该是最高的,如果是考虑兼容性,用varchar
      

  15.   

    varchar是ansi sql的标准类型,varchar2是oracle自己弄出来的新类型,oracle保证varchar2类型所有版本向下兼容,varchar类型就不一定,因为ansi标准可能会变, 如果是考虑效率,varchar2应该是最高的,如果是考虑兼容性(数据库移植),用varchar
      

  16.   

    varchar是ansi sql的标准类型,varchar2是oracle自己弄出来的新类型,oracle保证varchar2类型所有版本向下兼容,varchar类型就不一定,因为ansi标准可能会变, 如果是考虑效率,varchar2应该是最高的,如果是考虑兼容性(前台程序要支持所有主流数据库或数据库移植),用varchar
      

  17.   

    varchar是长度不固定的,最大支持4000个字节,并且区分中英文;varchar2基本上等同于varchar,它是oracle自己定义的一个非工业标准,不同在于,varchar2用null代替varchar的空字符串;varchar/varchar2适用于长度不固定的,一般不含中文的情况
      

  18.   

    varchar 基本上被 Oracle 废弃了。如果字段中仅有 ASCII 字符的话,就使用 varchar2 类型
    如果字段中汉字占大多数的话,使用 nvarchar2 类型为佳