数据库管理与开发 阶梯

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

如何理解Nvarchar()与varchar()区别,从返回值的字节数,与字符长度作对比.

DECLARE @value varchar(20)
SET @value='abc'
SELECT datalength(@value)
SELECT len(@value)

都返回值为3,因为varchar类型使用了3个单字节字符来存储三个字符的值。换nvarchar类型,
管理相同长度的值,就要多占用一倍的值.见示例2如下:

DECLARE @value nvarchar(20)
SET @value='abc'
SELECT datalength(@value) --返回6
SELECT len(@value) --返回3

我们再来测试一个整型变量。示例3

DECLARE @value1 int,@value2 int 
SET @value1 = 2
SET @value2 = 2000000000
SELECT datalength(@value1)     --返回字节:4
SELECT len(@value1)            --返回字符长度:1
SELECT datalength(@value2)     --返回字节:4 因为Int类型总是使用4个字节,不论值多少。
SELECT len(@value2)            --返回字符长度:10,因为Len函数本质上是将整型值当成已经转换成
字符型的数据来处理的。

示例4:使用中文

--nchar(n)存储大小为 n 字节的两倍,Char(n)存储大小为 n 个字节.例:Char(4),存放英文4个,汉字2个,
一个汉字占2个字节.;Nchar(4),存放英文4个,汉字4个;

declare @t table (tchar char(4),tnchar nchar(2))
insert into @t select tchar= '您好',tnchar= '您好'
select tchar,tnchar,datalength(tchar),datalength(tnchar),len(tchar),len(tnchar) from @t
posted on 2010-04-21 15:19  zhou__zhou  阅读(288)  评论(0编辑  收藏  举报