zoukankan      html  css  js  c++  java
  • [转] sql数据类型 varchar与nvarchar的区别

    SQL Server提供两种数据类型来存储字符信息。在如何在SQL Server或应用程序中使用方面,这两种数据类型大致是一样的。差别在于nvarchar是用于存储处理数据库图表中多语言数据的Unicode数据。其它语言有一套需要保存的字符代码的扩展集,这种数据类型支持这样的扩展。因为需要存储其它语言的扩展字符代码,nvarchar占用的空间是varchar的两倍。

             字符中,英文字符只需要一个字节存储就足够了,但汉字众多,需要两个字节存储,英文与汉字同时存在时容易造成混乱,Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。

            例如两字段分别有字段值:我和coffee 那么varchar字段占2×2+6=10个字节的存储空间,而nvarchar字段占8×2=16个字节的存储空间。如字段值只是英文可选择varchar,而字段值存在较多的双字节(中文、韩文等)字符时用nvarchar

    varchar[(n)]
    长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。所输入的数据字符长度可以为零。varchar 在 SQL-92 中的同义词为 char varying 或 character varying。 

    nvarchar(n) 
    包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。nvarchar 在 SQL-92 中的同义词为 national char varying 和 national character varying。

    ========================================================================

    NVARCHAR 
    在存储时,无论是全角还是半角,每个字符都占用两个字节。 
    在定义时,无论全角或是半角,都是定义字符个数而不是字节数。 
    最多显示4000个字符(无论全角或半角) 
    是UNICODE标准字符集。 
    VARCHAR 
    在存储时每个半角字符占用1个字节,每个全角字符占用两个字节。 
    在定义时,如果要存储一个汉字,要定义VARCHAR(2)才可以。要存储一个半角英文字母,VARCHAR(1)即可。 
    最多显示8000个半角字,4000个全角字 
    是非UNICODE字符集。 
    举例说名体会一下吧: 
    DECLARE @N NVARCHAR(4) 
    DECLARE @V VARCHAR(4) 
    SET @N='ABCD' 
    SET @V='ABCD' 
    SELECT N=@N,V=@V,NL=len(@n),VL=len(@v) 
    --结果:ABCD ABCD 4 4 

    SET @N='工人农民' 
    set @V='工人农民' 
    SELECT N=@N,V=@V,NL=len(@n),VL=len(@v) 
    --结果:工人农民 工人 4 2 

  • 相关阅读:
    个人不断学习的真正起因(值得收藏)——北漂18年(24)
    IPython基础使用_Round2
    IPython基础使用_Round2
    Mysql 创建查询用户
    8.11.3 Concurrent Inserts 并发插入:
    8.11.2 Table Locking Issues 表锁发生
    8.11.1 Internal Locking Methods
    Oracle timestamp
    报表引擎API开发入门— EJB程序数据源
    8.10.3 The MySQL Query Cache
  • 原文地址:https://www.cnblogs.com/huaqing/p/3251088.html
Copyright © 2011-2022 走看看