使用 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
中使用 CASE
但 OR
和 AND
:
WHERE
( @pFILTER_TYPE = 1 AND FULFILMENT_STATUS_CODE <> 'CNL' )
OR
( @pFILTER_TYPE = 2 AND FULFILMENT_STATUS_CODE = 'FUL' )
但是,您也可以在此存储过程中使用 IF...ELSE
和两个不同的查询,而不是评估每个记录的参数。这更冗长但也更有效。
我想使用 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
中使用 CASE
但 OR
和 AND
:
WHERE
( @pFILTER_TYPE = 1 AND FULFILMENT_STATUS_CODE <> 'CNL' )
OR
( @pFILTER_TYPE = 2 AND FULFILMENT_STATUS_CODE = 'FUL' )
但是,您也可以在此存储过程中使用 IF...ELSE
和两个不同的查询,而不是评估每个记录的参数。这更冗长但也更有效。