DECLARE @sB intSET @sB = 1    --这里可否赋什么值都可以SELECT *
FROM TABLE_A 
WHERE 
sA = @sB or 1=1      --这里就屏蔽了sA = @sB这个条件

解决方案 »

  1.   

    sA 与 @sB 都是字符串的啊。。
      

  2.   

    aw511(点点星灯) 说的是正确的!你稍微变通一下DECLARE @sB varchar(10)SET @sB = 'all'   --这里赋什么值都可以SELECT *
    FROM TestInfo 
    WHERE 
    sa(你所要传入的值) = @sB or 'all'='all'      --这里就屏蔽了sA = @sB这个条件
      

  3.   

    如果你是这种不定的情况,最好用动态语句,
    避免当查询所有记录时带来的检索,影响
    查询速度.
     方法一
    if (@sB<>'') or (@sB is not NUll) 
     SELECT *
      FROM TABLE_A 
      WHERE sA = @sB
    else
       SELECT *
      FROM TABLE_A  方法二:DECLARE @sB varchar(10)
    Declare @Sql nvarchar(4000)if (@sB<>'') or (@sB is not NUll)
      set @Sql=' Where sA='''+@sB+''''
    else
      set @Sql=''exec(' SELECT * FROM TABLE_A '+@Sql)--还有更灵活的做各种条件...
      

  4.   

    没明白我的意思吗?
    这是存储过程中的一段
    @sB是有可能有值也可能没值的。我要的是在它的有值时根据它的条件可以查询,没有值时可以查询出全部。skyskywind(寂寞风) 、aw511(点点星灯)你们都说那种方法可以,但我不明白你们是怎么来控制这个条件的。WangZWang(阿来) 因为我的代码相当长,不可能用你那种方法的