Передача нескольких параметров в Where-In SQL - Oracle - PullRequest
1 голос
/ 28 февраля 2020

Я пытаюсь написать запрос, передавая три переменные вместе: -

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

Не могли бы вы мне помочь с обходным решением? Я могу использовать объединение трех разных запросов, но это может привести к ошибкам с большими данными для запроса.

Спасибо,

1 Ответ

1 голос
/ 28 февраля 2020

Это потому, что вы предоставляете ему опции только для извлечения ненулевых значений, попробуйте что-то вроде этого

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