我在case
子句中使用where
但收到错误:missing keyword
SQL:
SELECT *
FROM tmp t
WHERE
CASE :p_flag WHEN 'Y'
THEN t.call_destination NOT IN ('Premium', 'Satellite')
ELSE t.call_destination LIKE call_destination
END;
答案 0 :(得分:2)
CASE
表达式的谓词必须是单个值,而不是另一个表达式。如果我正确阅读了您的WHERE
条款,您应该能够按如下方式重新查询您的查询:
SELECT *
FROM tmp t
WHERE
(:p_flag = 'Y' AND t.call_destination NOT IN ('Premium','Satellite')) OR
(:p_flag <> 'Y' AND t.call_destination LIKE call_destination);
-- ^^^ not sure about this
我已经突出显示了您正在进行的LIKE
比较,这似乎没有意义,因为它总会返回true。