我想写一条语句
有条件a和b。
但b不一定需要。
例如
select * from dbo.t1 where a='x' and b='y'x,y都是变量该怎么写上面的语句在特定条件下才能等同与select * from dbo.t1 where a='x'请各位帮忙。多谢

解决方案 »

  1.   

    我想写一条语句
    有条件a和b。
    但b不一定需要。
    例如
    select * from dbo.t1 where a='x' and b='y'x,y都是变量该怎么写上面的语句在特定条件下才能等同与select * from dbo.t1 where a='x'请各位帮忙。多谢declare @x as int
    declare @y as int
    set @sql as varchar(100)
    set @x = 1
    set @y = 2
    set @sql = 'select * from t1 where a=' + cast(@x as varchar) + ' and b = ' + cast(@y as varchar)exec(@sql)
      

  2.   

    如果都是字符型declare @x as varchar(10)
    declare @y as varchar(10)
    set @sql as varchar(100)
    set @x = '1'
    set @y = '2'
    set @sql = 'select * from t1 where a='' + cast(@x as varchar) + '' and b = '' + cast(@y as varchar) + ''exec(@sql)
      

  3.   


    DECLARE @sql varchar(1000)
    declare @a varchar(10)
    declare @b varchar(10)
    select @a='a'
    select @b='b'
    select @sql='select * from dbo.t1'
    select @sql=@sql+' where a='''+@a+''''+case  when @b<>'' then 'and b='''+@b+'''' else ' ' end
    exec(@sql)
    当b='b'时
    select * from dbo.t1 where a='a'and b='b'当b=null 时
    select * from dbo.t1 where a='a'