日期:2014-05-17  浏览次数:20421 次

请教如何连接两个查询字符串
本帖最后由 ldjssoft 于 2014-01-23 23:45:35 编辑
请教如何连接两个查询字符串,我下面的代码报错了。

是根据传递物cftx参数,判断是否加入“@Date<>LastJxDate ”这个查询条件到查询代码中。




Declare @CfTx int,@Date Datetime,@CfCxStr varchar(50)


Set @Date=Convert(Varchar(10),GetDate(),120)
set @CfTx=1
set @CfCxStr=''

if @CfTx=1 
set @CfCxStr= and @Date<>LastJxDate 


select * from CkInfo where ShenHe=1 +@CfCxStr+ and day(BeginDate)=day(@Date))


------解决方案--------------------
SQL 语句要拼接的话,就得用 sp_executesql 了:
Declare @CfTx int,@Date Datetime, @CfCxStr varchar(50)
declare @sql nvarchar(max)
Set @Date=Convert(Varchar(10),GetDate(),120)
set @CfTx=1
set @CfCxStr=''
if @CfTx=1 set @CfCxStr=' and @Date<>LastJxDate'
set @sql='select * from CkInfo where ShenHe=1' + @CfCxStr + ' and day(BeginDate)=day(@Date)'
execute sp_executesql @sql,N'@Date Datetime',@Date=@Date

------解决方案--------------------
你这个SQL属于动态SQL,要用exec来执行,帮你把代码改了下,你看看是否可以执行

Declare @CfTx int,@Date Datetime,@CfCxStr varchar(50)
 
 
Set @Date=Convert(Varchar(10),GetDate(),120)
set @CfTx=1
set @CfCxStr=''
 
if @CfTx=1 
set @CfCxStr= ' and @Date<>LastJxDate '
 
set @CfCxStr='select * from CkInfo where ShenHe=1' +@CfCxStr+ 'and day(BeginDate)=day('+@Date+'))'
exec(@CfCxStr)