sql-server - '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
解决方案
这是你想要完成的吗?(为提高可读性而扩展)
SELECT *
FROM [TABLE]
WHERE [STATUS] = 1
AND
(
(
@check = 0
AND [TYPE] = 'typeA'
)
OR
(
@check = 1
AND [TYPE] IN ('typeB', 'typeC')
)
)