日期:2014-05-18 浏览次数:20637 次
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的长度肯定不止
------解决方案--------------------