日期:2014-05-16  浏览次数:20686 次

===========这个语句怎么改?=================
在一个存储过程查询中使用到多个 with as 子查询,例如 
;with
cte1 as
(
select * from table1   where name like '%AAAA%'
),
cte2 as
(
select * from table2 where id > 20
),
cte3 as
(
select * from table3 where price < 100
)
select a.* from cte1 a, cte2 b, cte3 c where a.id = b.id and a.id = c.id


红色字的 AAAA 如果是传进来的参数,我想实现
如下这种效果( 也就是如果参数为空,就不要上面where 后面的条件,直接查询全部。不为空就加上),
有什么办法没?
 declare @SQL VARCHAR(1000)
  SET @SQL='where 1=1 '
 if(isnull(@UserId,'')!='')
  begin 
 set @SQL=@SQL+'and Userid like ''%'+ @UserId + '%'''
  end
 if(isnull(@AuUName,'')!='')
  begin
    set @SQL=@SQL+'and AuUName like ''%'+ @AuUName + '%'''
  end

------解决方案--------------------
你不都写出来了么?