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 

  • 相关阅读:
    Spring Boot2 系列教程(二十)Spring Boot 整合JdbcTemplate 多数据源
    Spring Boot 如何给微信公众号返回消息
    Spring Boot2 系列教程(十九)Spring Boot 整合 JdbcTemplate
    Spring Boot2 系列教程(十八)Spring Boot 中自定义 SpringMVC 配置
    Spring Boot 开发微信公众号后台
    Spring Boot2 系列教程(十七)SpringBoot 整合 Swagger2
    Spring Boot2 系列教程(十六)定时任务的两种实现方式
    Spring Boot2 系列教程(十五)定义系统启动任务的两种方式
    Spring Boot2 系列教程(十四)CORS 解决跨域问题
    JavaScript二维数组
  • 原文地址:https://www.cnblogs.com/huaqing/p/3251088.html
Copyright © 2011-2022 走看看