首页 > 解决方案 > Oracle CASE 缺少“in”限制的右括号

问题描述

我有一个 QRY 我正在 Oracle 中为 spotfire 开发。在 where 语句中,我有一个决策案例语句,如果它是真的,我试图传递一个项目列表以匹配一个列,下面是我所拥有的,但是它抛出了一个缺少右括号的错误,我无法确定原因。简而言之,当一个变量被确定为 True (在这种情况下,例如 9>8,我需要它来产生这些项目,否则,产生整个列,没有限制。注意:当它只有 1 个项目被传递时,这很好用,即“BOB”,但只要它的倍数,就会发生此错误。

and  Column1 = (CASE When 9>8 Then ('BOB','TOM') Else Column1 END)

标签: sqloraclespotfire

解决方案


在 where 子句中最好避免使用 case 表达式。AND相反,用and编写逻辑OR

And (
        (9>8 AND Column1 IN ('BOB','TOM')) 
        OR 9<=8 -- You say you check a variable here, don't forget to check for NULL
   ) 

推荐阅读