日期:2014-05-18  浏览次数:20517 次

quotename的使用问题
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')
--查询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
请问为什么?

------解决方案--------------------
SQL code

------长度太长了。

------解决方案--------------------
SQL code

quotename 返回值类型是nvarchar(258)
也就是最多129个字符,你的B的长度肯定不止

------解决方案--------------------
探讨
有解决方法不?