Oracle CASE 缺少"in"限制的右括号



我在Oracle中为spotfire开发了一个QRY im。在where语句中,我有一个决策用例语句,如果它为True,我将尝试传递一个与列匹配的项目列表,下面是我所拥有的,但它抛出了一个缺少右括号的错误,我无法确定原因。简言之,当一个变量被确定为True时(在本例中为9>8,我需要它来生成这些项,否则,会无限制地生成整个列。注意:当它只有一个项目被传递时,即"BOB",这很好,但一旦它有多个,就会发生此错误。

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

where子句中最好避免使用Case表达式。相反,使用ANDOR:编写逻辑

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
) 

Oracle没有用于SQL查询的布尔类型。

相反,只需使用基本逻辑:

and  ( (9 > 8 and Column1 in ('BOB','TOM')) or
9 <= 8
)

最新更新