Я встретил такой запрос в базе данных:
SELECT col_a
FROM my_table
WHERE
nvl(col_b, 0) in
nvl(nvl(:arg, col_b), 0)
Это вернет col_a из моей таблицы, где:
- col_b ==: arg
- или if: arg is null возвращает всю таблицу
Это выглядит как довольно запутанный способ вернуть одну или все записи, соответствующие входному аргументу, или просто выбрать всю таблицу в зависимости от значениявходного аргумента.
Есть ли более простой способ достижения того же эффекта?
Кроме того, я отмечаю, что NVL
специфичен для Oracle, есть ли какое-то преимущество от его использования в этом случаесвыше COALESCE
?