sql - 对带有 Case 语句的Where进行矛盾条件检查

标签 sql t-sql sql-server-2005

我想使用 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,而是使用 ORAND:

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

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

关于sql - 对带有 Case 语句的Where进行矛盾条件检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38501926/

相关文章:

sql - 在嵌套循环连接中哪个表被认为是 'inner'

sql - 选择每天的第一个条目

当前打卡员工的 SQL 列表

sql-server - 添加附加行

sql - 帮助 PIVOT

mysql - SQL - 检索好友的用户数据

mysql - 效率: How many MySQL rows should I pull at a time?

sql - 我如何强制执行此约束?

sql-server-2005 - 如何在 SQL SERVER 2005 中让 parent 给 child 一个 child

oracle - 比较SQL Server和Oracle中的表