日期:2014-05-18 浏览次数:20517 次
create table #tb(FID varchar(10) ,FName varchar(8000)) insert into #tb values('A','AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB') insert into #tb values('B','AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBAAAAAAAAAAAAAA+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1') --查询A Declare @a varchar(max) set @a='' select @a =@a+' when FName='+quotename(isnull(FName,0),'''')+' then '+isnull(FName,0) from #tb where FID='A' select @a --查询B Declare @a varchar(max) set @a='' select @a =@a+' when FName='+quotename(isnull(FName,0),'''')+' then '+isnull(FName,0) from #tb where FID='B' select @a
------长度太长了。
------解决方案--------------------
quotename 返回值类型是nvarchar(258) 也就是最多129个字符,你的B的长度肯定不止
------解决方案--------------------