#sql #oracle
Пытаюсь написать запрос в Oracle, который использует разные множества для IN() в условии. Общий вид запроса примерно такой: -- что-то забирает WHERE id IN (CASE WHEN name LIKE '%max%' THEN (1, 2, 5) ELSE (SELECT id FROM anotherTable) END); Понятно, что такой вариант не работает и выдаёт ошибку ora-01427. Судя по тому, что я прочитал в сети, CASE не может вернуть множество. Что можно использовать, чтобы вернуть именно множество?
Ответы
Ответ 1
Попробуй это where ( NAME like '%max%' and ID in (1, 2, 5) ) or ( NAME not like '%max%' and ID in (select ID from anotherTable) )Ответ 2
Можно сделать еще так: where 1 = case when name like '%max%' and id in (1,2,5) then 1 when name like '%min%' and id in (select id from anotherTable) then 1 end
Комментариев нет:
Отправить комментарий