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,可是出现类似上面的情况,
查询A有结果,查询B返回null
请问为什么?