如果PARAM等于1,则要搜索TAX ='asd'的所有行,否则要搜索TAX <>'asd'的所有行(不是'asd'的所有行)。
类似这样的东西:
WHERE
TAX (
CASE
WHEN PARAM = '1'
THEN = 'asd'
ELSE <> 'asd'
END)
答案 0 :(得分:3)
您可以添加带有布尔逻辑的where
子句:
WHERE (PARAM = 1 AND TAX = 'asd') OR
(PARAM <> 1 AND TAX <> 'asd');
如果PARAM
具有NUMERIC类型,则无需包含' '
。
答案 1 :(得分:1)
不需要CASE
语句,只需使用方括号和OR
。
SELECT *
FROM yourtable
WHERE (TAX = 'asd' AND PARAM = '1') OR (TAX != 'asd')
答案 2 :(得分:0)
SELECT *
FROm table
WHERE (TAX = 'asd' AND PARAM IN (1))
OR (TAX <> 'asd' AND PARAM NOT IN (1))
答案 3 :(得分:0)
这可以通过“或”,“与”和一些括号来实现:
WHERE (PARAM = 1 AND TAX = 'asd')
OR (TAX <> 'asd')
除非数据库设计明确禁止,否则请务必考虑TAX可能为NULL的情况。