SQL Server WHERE based on CASE



如果 PARAM 等于 1,则要搜索 TAX = 'asd' 的所有行,否则搜索 TAX <> 'asd' 的所有行(不是 'asd' 的每一行(。

像这样:

WHERE
TAX (
CASE
WHEN PARAM = '1'
THEN = 'asd'
ELSE <> 'asd'
END)

您可以使用布尔逻辑添加where子句:

WHERE (PARAM = 1 AND TAX = 'asd') OR
(PARAM <> 1 AND TAX <> 'asd');

如果PARAM具有 NUMERIC 类型,则无需包含' '

不需要CASE语句,只需使用括号和OR即可。

SELECT *
FROM yourtable
WHERE (TAX = 'asd' AND PARAM = '1') OR (TAX != 'asd')
SELECT *
FROm table
WHERE (TAX = 'asd' AND PARAM IN (1))
OR (TAX <> 'asd' AND PARAM NOT IN (1))

这可以通过OR,AND和一些括号来实现:

WHERE (PARAM = 1 AND TAX = 'asd')
OR (TAX <> 'asd')

请务必考虑 TAX 可能为 NULL 的情况,除非您的数据库设计明确禁止这样做。

最新更新