declare @t varchar(100)
declare @sql varchar(1000)
set @t=''
IF(条件5 != '')
set @t=' AND 条件5'set @sql='SELECT * FROM Table1 
       WHERE 条件1 AND 条件2 AND 条件3 AND 条件4' + @t +
   'SELECT * FROM Table2 
       WHERE 条件1 AND 条件2 AND 条件3 AND 条件44' + @t +
   'SELECT * FROM Table3 
       WHERE 条件1 AND 条件2 AND 条件3 AND 条件4' + @t +
   'SELECT * FROM Table4 
       WHERE 条件1 AND 条件2 AND 条件3 AND 条件4' + @t exec (@sql)

解决方案 »

  1.   

    哦,还要加个换行符declare @t varchar(100)
    declare @sql varchar(1000)
    set @t=''
    IF(条件5 != '')
    set @t=' AND 条件5'set @sql='SELECT * FROM Table1 
           WHERE 条件1 AND 条件2 AND 条件3 AND 条件4' + @t + char(10)+
       'SELECT * FROM Table2 
           WHERE 条件1 AND 条件2 AND 条件3 AND 条件44' + @t + char(10)+
       'SELECT * FROM Table3 
           WHERE 条件1 AND 条件2 AND 条件3 AND 条件4' + @t + char(10)+
       'SELECT * FROM Table4 
           WHERE 条件1 AND 条件2 AND 条件3 AND 条件4' + @t exec (@sql)
      

  2.   

    declare @strWhere varchar(1000),
    @strTblName varchar(50),
    @strSql nvarchar(3000)
    set @strWhere=' 条件1 AND 条件2 AND 条件3 AND 条件4 '
    IF(条件5 <> '')
    begin
    set @strWhere=@strWhere+' AND 条件5'
    end
    declare cur_table cursor for select name from sysobjects where xtype='U' and name in ('Table1','Table2','Table3','Table4')
    open cur_table 
    fetch cur_table into @strTblName
    while @@fetch_status=0
    begin
    set @strSql='SELECT * FROM '+@strTblName+' ' + @strWhere 
    exec sp_execute @strSql
    fetch cur_table into @strTblName
    end
    close cur_table
    deallocate cur_table
      

  3.   

    必须要声明变量啊,如果要直接在SQL语句后加变量不行吗?
    declare @t varchar(100)
    set @t=''
    IF(条件5 != '')
    set @t=' AND 条件5'
    SELECT * FROM Table4 
          WHERE 条件1 AND 条件2 AND 条件3 AND 条件4 + @t
    这么写行吗?