Вы можете использовать выражение case..when
, например:
SELECT *
FROM tab
WHERE CASE
WHEN :emp_status='A' THEN 'A'
WHEN :emp_status='I' THEN emp_status
WHEN :emp_status is null THEN emp_status
END = emp_status
AND ( emp_status != 'I' OR :emp_status is null )
, где :emp_status
- переменная связывания, которая будет передана в запрос.
Кроме того, вы также можете использовать DECODE()
функцию
SELECT *
FROM tab
WHERE DECODE( :emp_status, 'A', 'A', 'I', emp_status, null , emp_status ) = emp_status
AND ( emp_status != 'I' OR :emp_status is null )