首页 > 解决方案 > 'CASE ... WHEN ... THEN' 语法中 THEN 之后的表达式

问题描述

此 sql 工作正常:

DECLARE @check bit = 1

  SELECT * FROM [TABLE]
  WHERE [STATUS] = 1
  AND [TYPE] =
  CASE WHEN @check = 0 THEN 'typeA'
  ELSE 'typeB'
  END

但是当我尝试使用带有“或”的表达式时,我得到了错误:

DECLARE @check bit = 1

  SELECT * FROM [TABLE]
  WHERE [STATUS] = 1
  AND [TYPE] =
  CASE WHEN @check = 0 THEN 'typeA'
  ELSE ('typeB' OR 'typeC')
  END

例如,我希望有:

If(@check = 0) -> ... WHERE [Type] = sth OR sth

标签: sql-servertsql

解决方案


这是你想要完成的吗?(为提高可读性而扩展)

SELECT  *
FROM    [TABLE]
WHERE   [STATUS] = 1
        AND 
        (
            (
                @check = 0
                AND [TYPE] = 'typeA'
            )
            OR
            (
                @check = 1
                AND [TYPE] IN ('typeB', 'typeC')
            )
        )

推荐阅读