zoukankan      html  css  js  c++  java
  • oracle中Varchar2和nvarchar2的区别

    在oracle 11g下测试了下varchar2与nvarchar2这两种类型,网上有很多关于这两种类型的区别的帖子,我还是自己测试了下。

    varchar2(size type),size最大为4000,type可为char或者byte,默认是byte。

    varchar2最多存放4000字节的数据,不管type是char还是byte。所以如果你设置varchar2(4000 char),你可以存入4000个字母,但是不能存入4000个汉字。如果数据库字符集编码是GBK,那么varchar2最多能存放2000个汉字,如果字符集编码是UTF-8,那么则只能最多存放1333个汉字了。

    nvarchar2(size),size最大值为2000,单位是字符,而且不管是汉字还是字母,每个字符的长度都是2个字节。所以nvarchar2类型的数据最多能存放2000个汉字,也最多只能存放2000个字母。并且nvarchar2不同于varchar2,他不受数据库字符集的影响。

    另外如果我们把A1,A2都设为varchar2(4000),并且这两个字段的内容长度都超过了2000字节,那么使用select A1||A2 from table这样的语句时,因为结果超过了4000字节,所以会报错。

    从使用角度来看区别在于:NVARCHAR2在计算长度时和字符集相关的,例如数据库是中文字符集时以长度10为例,则 

    1、NVARCHAR2(10)是可以存进去10个汉字的,如果用来存英文也只能存10个字符。 
     2、而VARCHAR2(10)的话,则只能存进5个汉字,英文则可以存10个;
    VARCHAR2可变长度字符域,最大长度可达4000个字符     
       NVARCHAR2多字节字符集的可变长度字符域,长度随字符集而定,最多为2000个字符或2000个字节;

    区别:

    1.nvarchar中字符为中文则一般按2个字节计算,英文数字等按照一个自己计算

    2.nvarchar2中所有字符均按照2个字节计算;

    3.nvarchar2虽然更占空间,但是它有更好的兼容性,所有推荐使用;

  • 相关阅读:
    136-如何访问redis数据库
    135-如何实现result风格
    134-SpringMVC中的值,会有一个默认值
    133-this知识点
    132-SpringBoot中的请求方法
    034-405是什么错误?
    131-逆向工程配置文件
    SQL---实验一
    《将博客搬至CSDN》
    正则表达式1---QQ号合法性判断
  • 原文地址:https://www.cnblogs.com/xtjatswc/p/12213355.html
Copyright © 2011-2022 走看看