SQL查询 - 仅在另一个条件下在WHERE中添加条件

时间:2015-06-25 09:33:13

标签: sql where-clause

我想在where子句中执行类似的操作

WHERE ( i.accountid = @accountid 
      AND CASE WHEN @IsTest IS NOT NULL THEN b.IsTest = @IsTest ELSE 1 = 1

但是这个解决方案不起作用。对此有什么解决方案吗?基本上我想根据@IsTest值添加验证。

2 个答案:

答案 0 :(得分:5)

您想使用简单的布尔逻辑:

where  
 i.accountid = @accountid
  and 
 (@IsTest is null or b.IsTest = @Istest)

如果您想让case解决方案正常工作(仅用于说明目的 - 这不是一个好主意),您需要让case返回一个值你要比较的东西--T-SQL实际上没有" bool类型" (bit只是一个非常小的整数,它没有特殊的语法):

... and (case when @IsTest is not null then @IsTest else 1 end) = 1

答案 1 :(得分:0)

试试这个

WHERE ( i.accountid = @accountid 
      AND b.IsTest = CASE WHEN @IsTest IS NOT NULL THEN  @IsTest ELSE 1 END)

或只是

WHERE ( i.accountid = @accountid 
      AND b.IsTest = COALESCE(@IsTest1,)