- SQL code
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 [email protected]+' 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 [email protected]+' when FName='+quotename(isnull(FName,0),'''')+' then '+isnull(FName,0) from #tb where FID='B'select @a
在实际运用中要用到quotename,可是出现类似上面的情况,
查询A有结果,查询B返回null
请问为什么?
------解决方案--------------------
- SQL code
------长度太长了。
------解决方案--------------------
- SQL code
quotename 返回值类型是nvarchar(258)也就是最多129个字符,你的B的长度肯定不止
------解决方案--------------------