【发布时间】:2019-05-21 09:11:25
【问题描述】:
我需要根据参数进行查询,在CASE子句中使用参数。
参数将包含这些值:contactSuccess,contactFail,notcontacted
我们有列:empCommunication,它是布尔值。它将需要 0,1,null
根据参数值,我需要运行查询。
例如:如果参数是 contactSuccess 那么 Where 子句应该是 empCommunication = 1
如果参数是contactFail,那么Where子句应该是 empCommunication = 0
以上两个场景都在使用下面的查询,但是如果失败了
参数未联系,在这种情况下应为Where子句 empCommunication 为 NULL。
请帮我解决这个问题。
SELECT
empCategory as name,
count(*) as value
from EmployeeRecords R
WHERE empCommunication =
CASE ?
WHEN 'contactSuccess' THEN 1
WHEN 'contactFail' THEN 0
WHEN 'notcontacted' THEN IS NULL
END
group by empCategory
【问题讨论】:
-
在 WHERE 子句中使用 AND/OR 结构而不是 case 表达式通常会更好。
-
THEN NULL而不是THEN IS NULL。