• http://blog.itpub.net/28602568/viewspace-759789/


    varchar 、varchar2、nvarchar、nvarchar2  -->存储可变的字符串

    varchar 、varchar2:
    varchar:汉字全角等字符占2字节,数字、字母均1个字节
    varchar2:一般所有字符都占2个字符处理,主要也看数据库的编译格式
        GBK :汉字占2字节,英文1字节  -->(oracle 按照默认GBK编码格式)
        UTF-8:汉字3字节,英文1字节   -->select userenv('language') from dual;查看oracle 编码格式
    区别:
    varchar2 空串=null  “(insert into '' )--->select .. where id is null” 可以查到,varchar类型的空串就按''空串处理,not null查不到
    建议使用Oracle提供的特定数据类型varchar2,可以保证VARCHAR2在任何版本中该数据类型都可以向上和向下兼容(varchar oracle不建议使用)
    ---->varchar2适合存储英文
    nvarchar、nvarchar2  :
    nvarchar(n):存入n个英文/汉字/中文组合    10指字符数不是字节数      nvarchar类型中文2字节  英文1字节
    nvarchar2:字符均按2字节计算  nvarchar(20)-->可存入20个2字节的内容  -->虽占更多空间,兼容性好
    NVARCHAR2和VARCHAR2的区别
    1、NVARCHAR2(10)-->10中/10英 (nvarchar’2‘适合存储中文)
    2、VARCHAR2(10) -->最多5中/10英  适合存储英文

      datatypes 官网: http://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements001.htm 

    声明
    这里的user_segments.blocks=user_tables.blocks+user_tables.empty_blocks
    dba_tables.BLOCKS  Number of used data blocks in the table
    dba_tables.EMPTY_BLOCKS  Number of empty (never used) data blocks in the table
    dba_segments.blocks Size, in Oracle blocks, of the segment

    从合理利用空间和兼容性上考虑建议:
    如果该列有大量的英文则用varchar2
    如果该列有大量的中文则用nvarchar2


    总结:
    英文就不说了,varchar2存入英文 1字节  nvarchar2 存英文是2字节  
    所以建议不要在nvarchar2中存入英文  太浪费空间了
    测试下5个汉字 的varchar2(10)和 nvarchar2(5)那个效率高:

    经测试 5个汉字 的varchar2(10)和 nvarchar2(5)那个效率没太大影响 主要是存储数据选择数据类型要‘慎重’考虑

  • 相关阅读:
    localX mouseX stageX
    帮陈云庆做的手机报
    另一种换行排列方块的方法
    换行排列(思路源自陈勇源代码)
    网上摘的
    ASP.NET页面间数据传递(转)
    数据库连接字符串大全 之 SQL服务器篇
    保存一个免费的在线的图片转换工具网站,支持BMP,JPG,IOC,PNG和GIF
    关于IE6和IE7以及多个版本IE共存的问题
    如何测试sql语句性能,提高执行效率
  • 原文地址:https://www.cnblogs.com/jcz1206/p/4374372.html
Copyright © 2020-2023  润新知