【问题标题】:OR Operator in THEN section of CASE statementCASE 语句的 THEN 部分中的 OR 运算符
【发布时间】:2013-10-29 00:10:16
【问题描述】:

我有以下 SQL CASE 语句。我想将 NULL 值作为“SENNo”条件的一部分:

SEN = CASE --SEN
    WHEN @Subgroup = 'SENA' THEN 'A'
    WHEN @Subgroup = 'SENP' THEN 'P'
    WHEN @Subgroup = 'SENS' THEN 'S'
    WHEN @Subgroup = 'SENNo' THEN 'N'
END

所以我希望它能够有效地执行以下操作:

SEN = CASE --SEN
    WHEN @Subgroup = 'SENA' THEN 'A'
    WHEN @Subgroup = 'SENP' THEN 'P'
    WHEN @Subgroup = 'SENS' THEN 'S'
    WHEN @Subgroup = 'SENNo' THEN 'N' OR NULL
END

这不起作用,但我不确定如何构建我的逻辑。

编辑:这是 jparask 的建议让我走上正轨后的解决方案:

           ISNULL(SEN, 'N') = CASE --SEN
                   WHEN @Subgroup2 = 'SENA' THEN 'A'
                   WHEN @Subgroup2 = 'SENP' THEN 'P'
                   WHEN @Subgroup2 = 'SENS' THEN 'S'
                   WHEN @Subgroup2 = 'SENNo' THEN 'N'
               END

【问题讨论】:

    标签: sql sql-server-2008 operators case or-operator


    【解决方案1】:
    SEN = CASE --SEN
        WHEN @Subgroup = 'SENA' THEN 'A'
        WHEN @Subgroup = 'SENP' THEN 'P'
        WHEN @Subgroup = 'SENS' THEN 'S'
        WHEN ISNULL(@Subgroup,'SENNo') = 'SENNo' THEN 'N' 
    END
    

    SEN = CASE --SEN
        WHEN @Subgroup = 'SENA' THEN 'A'
        WHEN @Subgroup = 'SENP' THEN 'P'
        WHEN @Subgroup = 'SENS' THEN 'S'
        WHEN @Subgroup IS NULL OR @Subgroup = 'SENNo' THEN 'N' 
    END
    

    【讨论】:

    • 不太奏效,但让我走上了正轨!见编辑。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-17
    相关资源
    最近更新 更多