WHERE 子句中的 T-SQL 大小写行为



提前感谢您的关注!

我想将工作订单状态参数 (@WOStatusCriteria( 发送到存储过程(在 SQL Server 2016 中(,以便在 SELECT 中使用。 我想查询"R"(已发布(或"F"(公司(或两者的状态,具体取决于当前的需要。

由于可能的状态代码是 C、F、R、U 和 X,我在 WHERE 子句中编写了以下 CASE,希望如果参数中没有显式发送 R 或 F,则 R 和 F 状态都将通过 NOT C, NOT U, NOT X 短语返回。 它不起作用,我正在寻找一种有效的解决方案。 对此的任何想法将不胜感激。

(wo.STATUS = CASE 
    WHEN @WOStatusCriteria = 'R' THEN 'R'
    WHEN @WOStatusCriteria = 'F' THEN 'F'
END)
AND (NOT wo.STATUS = N'C' AND NOT wo.STATUS = N'U' AND NOT wo.STATUS = N'X') 

如果添加以下内容,则当前代码应该可以工作:

ELSE wo.STATUS

到您的 CASE 表达式。

由于wo.STATUS总是等于wo.STATUS,因此CASE将被忽略,其他条件将被评估。

最新更新