当前位置:  数据库>sqlserver

sql server 数据类型 varchar与nvarchar的区别

    来源: 互联网  发布时间:2014-08-29

    本文导语:      SQL Server提供两种数据类型来存储字符信息。在如何在SQL Server或应用程序中使用方面,这两种数据类型大致是一样的。差别在于nvarchar是用于存储处理数据库图表中多语言数据的Unicode数据。 其它语言有一套需要保存的字符...

    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


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 如何将java.util.Date类型的日期转换成java.sql.Date类型的日期?
  • 请问SQL中的datetime类型于java中什么类型对应?
  • Access 数据类型与 MS SQL 数据类型的相应
  • Sql学习第一天——SQL 将变量定义为Table类型(虚拟表)
  • 对面的大虾看过来:sql到java的类型转换?
  • sql使用cast进行数据类型转换示例
  • SQL 时间类型的模糊查询
  • sql语法中什么类型的值需要用单引号‘’修饰?
  • 怎样把String转换成int?怎样获得系统时间并转换成java.sql.date类型?
  • java.sql.SQLException: 类型长度大于最大值 是什么意思?在线给分
  • 如何获得系统时间,类型为java.sql.Timestamp
  • 如何成功读取并显示SQL数据库中image类型字段?
  • SQL中函数 replace 的参数1的数据类型ntext无效的解决方法
  • .net/c#/asp.net iis7站长之家
  • jsp中在oracle中查询日期类型时sql语句该怎么写啊?
  • SQL 判断字段类型语句
  • JSP不支持MS SQL Server bigint类型?
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • SQL 时间类型的模糊查询的小例子
  • SQL时间类型的模糊查询
  • java命名空间java.sql接口statement的类成员方法: executeupdate定义及介绍
  • 请问,这是什么错误!java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][Named Pipes]??????? SQL Server?虽然分少,但一定给,只要您是前5名回复者中最好的以为!
  • java命名空间java.sql接口connection的类成员方法: nativesql定义及介绍
  • SQL查询分析工具 SQL Workbench/J
  • java命名空间java.sql接口preparedstatement的类成员方法: executeupdate定义及介绍
  • oracle导出sql语句的结果集和保存执行的sql语句(深入分析)
  • java命名空间java.sql接口rowid的类成员方法: getbytes定义及介绍
  • SQL Server统计SQL语句执行时间的脚本
  • java命名空间java.sql接口ref的类成员方法: getbasetypename定义及介绍
  • SQL客户端软件 PKLite SQL Client
  • java命名空间java.sql接口databasemetadata的类成员方法: getsqlkeywords定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3