使用 Case 语句对 Where 进行矛盾条件检查

Contradictory condition checks on Where with a Case Statement

我想使用 CASE 检查同一字段的 WHERE 子句上的两个矛盾条件;

如果我提取我想要的东西,如下所示

WHERE FULFILMENT_STATUS_CODE != 'CNL'
WHERE FULFILMENT_STATUS_CODE = 'FUL'

我尝试(并想要)的方式如下,但我想知道如何在她身上使用 !=

WHERE
    FULFILMENT_STATUS_CODE =
    CASE @pFILTER_TYPE
        WHEN 1 THEN 'CNL' 
        WHEN 2 THEN 'FUL' 
    END

不要在 WHERE 中使用 CASEORAND:

WHERE 
    ( @pFILTER_TYPE = 1 AND FULFILMENT_STATUS_CODE <> 'CNL' )
OR 
    ( @pFILTER_TYPE = 2 AND FULFILMENT_STATUS_CODE = 'FUL' )

但是,您也可以在此存储过程中使用 IF...ELSE 和两个不同的查询,而不是评估每个记录的参数。这更冗长但也更有效。