quotename的使用问题
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')--查询ADeclare @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--查询BDeclare @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的长度肯定不止
[解决办法]