【问题标题】:Oracle SQL WHERE CASE IN statement with 3 outputs具有 3 个输出的 Oracle SQL WHERE CASE IN 语句
【发布时间】: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: 无效的关系运算符

【问题讨论】:

    标签: sql oracle case


    【解决方案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
      猜你喜欢
      • 2018-10-27
      • 1970-01-01
      • 1970-01-01
      • 2018-11-29
      • 2013-10-16
      • 2011-03-28
      • 1970-01-01
      • 1970-01-01
      • 2021-11-12
      相关资源
      最近更新 更多