日期:2014-05-19  浏览次数:20534 次

varchar变量 长度问题?
declare   @str   varchar(8000)
set   @str= ' '
select     @str=   @str+col1     from   table1  
print   @str
print   len(@str)

以上语句执行结果,@str被截,len(@str)=4000,为何?

------解决方案--------------------
后面如果有空格的话,其长度是不计的.
------解决方案--------------------
LEN
傳回給定的字串運算式之字元數而非位元組數,字串末尾的空白不計。


不是變量定義的長度
------解决方案--------------------
declare @str varchar(8000)
Select @str = 'aa '
Select Len(@str)
--2
------解决方案--------------------
最好改成这样:
declare @str varchar(8000)
set @str= ' '
select @str= rtrim(@str)+ltrim(rtrim(col1)) from table1
print @str
print len(@str)

------解决方案--------------------
varchar+nvarchar=nvarchar
nvarchar()最多字符串长度4000
------解决方案--------------------
用datalength才是真正的长度

len(@str)换成datalength(@str)试一下
应该你的是汉字等字符吧,所以当然只能查出4000了