如果 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 的情况,除非您的数据库设计明确禁止这样做。