sql - Oracle CASE 缺少“in”限制的右括号
问题描述
我有一个 QRY 我正在 Oracle 中为 spotfire 开发。在 where 语句中,我有一个决策案例语句,如果它是真的,我试图传递一个项目列表以匹配一个列,下面是我所拥有的,但是它抛出了一个缺少右括号的错误,我无法确定原因。简而言之,当一个变量被确定为 True (在这种情况下,例如 9>8,我需要它来产生这些项目,否则,产生整个列,没有限制。注意:当它只有 1 个项目被传递时,这很好用,即“BOB”,但只要它的倍数,就会发生此错误。
and Column1 = (CASE When 9>8 Then ('BOB','TOM') Else Column1 END)
解决方案
在 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
)
推荐阅读
- reactjs - 通过拖动更改屏幕宽度时出错。如何使用 react-spring 进行响应式设计?
- javascript - 如何在 create-react-app 中使用 purgeCSS 删除未使用的 css 和 javascript
- python - 是否可以使用 gekko 进行投资组合优化?
- javascript - 替换内联函数中的所有重合
- windows - 尝试使用 npm 安装返回代码 EINVAL
- heroku - Heroku 为我的 API 提供服务器错误,但没有错误代码
- python - .py 到 pydrion 或 pydriod 上的 apk 任何方法都不起作用
- python - 我正在开发一个 Flask + ReactJs 项目,并且在我的 Flask api 中出现此错误:AttributeError: 'Employee' object has no attribute 'append'
- python - 如何编写一个将函数输出作为数据帧输入的函数
- javascript - 使用 vanilla javascript 制作滚动功能