解釋一下數據類型的長度
declare @str1 nvarchar(20)
set @str1='test'
select datalength(@str1)
declare @str2 nvarchar(3)
set @str2='testtest'
select datalength(@str2)
declare @str3 nvarchar
set @str3='test'
select datalength(@str3)
解釋一下上面3個結果的值
[解决办法]
declare @str3 nvarchar 默认就是Nvarchar(1)
[解决办法]
这个函数计算的是字节个数,不是字符的个数,而nvarchar的一个字符,占用2个字节。
所以第1个返回8就很正常。
第2个之所以返回6,是因为你定义的长度时nvarchar(3),也就是只能存放3个字符:tes,所以3*2 = 6
第3个也是一样的,只能存储1个字符,所以也就是:t
declare @str1 nvarchar(20)
set @str1='test'
select datalength(@str1),@str1
declare @str2 nvarchar(3)
set @str2='testtest'
select datalength(@str2),@str2
declare @str3 nvarchar
set @str3='test'
select datalength(@str3),@str3
/*
----------- --------------------
8 test
(1 行受影响)
----------- ----
6 tes
(1 行受影响)
----------- ----
2 t
(1 行受影响)
*/