具有 3 个输出的 Oracle SQL WHERE CASE IN 语句
Posted
技术标签:
【中文标题】具有 3 个输出的 Oracle SQL WHERE CASE IN 语句【英文标题】:Oracle SQL WHERE CASE IN statement with 3 outputs 【发布时间】:2018-06-25 10:47:59 【问题描述】:我有一小段代码在前端有一个参数输入。
输入的选项是yes、no & all 等同于:
yes = TRUE
no = FALSE
all = TRUE & FALSE
我的代码是:
SELECT c.ID,
c.rep,
c.cust
FROM mytable c
WHERE '&input' IN (
CASE WHEN 'yes' THEN c.Acc = 'TRUE'
WHEN 'no' THEN c.Acc = 'FALSE'
WHEN 'all' THEN c.Acc IN ('TRUE', 'FALSE')
END)
但得到错误:
ORA-00920: 无效的关系运算符
【问题讨论】:
【参考方案1】:使用OR
SELECT c.ID,
c.rep,
c.cust
FROM mytable c
WHERE (&input = 'yes' and c.Acc = 'TRUE') OR
(&input = 'no' and c.Acc = 'FALSE') OR
(&input = 'all' and c.Acc IN ('TRUE', 'FALSE'))
【讨论】:
【参考方案2】:我想你想要:
SELECT c.ID, c.rep, c.cust
FROM mytable c
WHERE (c.Acc = = &input OR &input = 'all')
【讨论】:
c.Acc 不能等于输入,因为它们是数据库中的不同值。数据有 TRUE 或 FALSE,输入可以是 yes、no 或 all以上是关于具有 3 个输出的 Oracle SQL WHERE CASE IN 语句的主要内容,如果未能解决你的问题,请参考以下文章