Mожно ли сочитать несколько условий в зависимости от значений параметров?
Можно ли сочитать несколько условий в зависимости от значений параметров?
Есть условие:
and (:x is null or ','||:x||',' like '%,'||column3||',%')
То есть, что пытаюсь сделать, сейчас произвожу выборку по условию :x в колонке column3. Мне нужно проверить :x, если допустим будет равен all, то произвести выборку по определённым значениям. Например:
column3` in ('value1', 'value2')
В этом примере с данными пытаюсь отфильтровать несколько условий такого вида:
where df in (decode(:x, 'Other', 'vol1'), 'vol2')
И получаю нужный мне результат, но, затрудняюсь дальше с ветвлением, соответсвенно, если :x будет vol3 или vol2 выполнить выборку по ним, а если :x равен 'Other', то выполнить по заданным значениям, допустим ('vol4','vol5'). И попытаться учесть то, что может быть передано несколько условий, 'vol1' и Other, и тогда выполнить выборку по обоим.
Возможно ли реализовать подобное?
Ответы (1 шт):
Попробуйте так (db<>fiddle):
with params (par1, par2) as (
select sys.ODCIVarchar2List('vol1','vol2'), 'vol3' from dual
)
select two.* from two, params
where df in (
select column_value from table (par1) union all
select par2 from dual
)
CTE тут только заменяет переменные связывания, в реальном запросе :par1 ... :par1.