0

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

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

2 回答 2

1

在 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
   ) 
于 2020-10-23T15:51:10.310 回答
0

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

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

and  ( (9 > 8 and Column1 in ('BOB','TOM')) or
       9 <= 8
     )
于 2020-10-23T15:47:04.163 回答