如何理解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
一个汉字占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

浙公网安备 33010602011771号