代码之家  ›  专栏  ›  技术社区  ›  Matt

Oracle SQL where case-in语句,有3个输出

  •  0
  • Matt  · 技术社区  · 6 年前

    我有一小段代码,在前端有一个参数输入。

    输入选项为“是”、“否”和“全部”,等于:

    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:关系运算符无效

    2 回复  |  直到 6 年前
        1
  •  1
  •   Radim Bača    6 年前

    使用 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
  •  1
  •   Matt    6 年前

    我想你想要:

    SELECT c.ID, c.rep, c.cust
    FROM mytable c 
    WHERE (c.Acc =  = &input OR &input = 'all')