【问题标题】:Passing multiple parametes in Where-In SQL- Oracle在 Where-In SQL-Oracle 中传递多个参数
【发布时间】:2020-02-28 16:39:55
【问题描述】:

我正在尝试编写一个将三个变量一起传递的查询:-

select 
a,b,c,*
from table1 where
(a,b,c) in (('1','2','3'),('4','5','6'));

当没有任何值为空时,这会给我结果。

但是,当我尝试将其中至少一个作为空/空白传递时,它给了我无效的关系运算符错误:-

select 
a,b,c,*
from table1 where
(a,b,c) in (('1','2',null),('4','5',''));
  [Error Code: 920, SQL State: 42000]  ORA-00920: invalid relational operator

您能帮我解决这个问题吗? 我可以使用三个不同查询的联合,但这很容易出错,因为要查询大量数据。

谢谢,

【问题讨论】:

    标签: sql oracle11g where-in


    【解决方案1】:

    那是因为你给它提供了只提取非空值的选项,试试这样的

    select 
    a,b,c,*
    from table1 where
    (a in ('1', '4')) or (b in ('2','5')) or (c in ('3','6'));
    

    【讨论】:

    • 感谢您的回答。但这并没有给我想要的结果。它正在用 in 子句中的其他值替换 null/blank。
    • 相反,这个查询似乎完全符合您的要求。 Where 和 what 正在替换 null/blank?您的第二个查询将只是 ... or c is null
    猜你喜欢
    • 1970-01-01
    • 2013-12-12
    • 1970-01-01
    • 2021-08-08
    • 1970-01-01
    • 2011-09-07
    • 1970-01-01
    相关资源
    最近更新 更多