बस coalesce
का उपयोग करें . इसे लिखने का यह सबसे पठनीय और समझने योग्य तरीका है। चूंकि तर्क एक विधेय में निहित है, इसलिए इसे बनाए रखना और हटाना आसान है:
select * from job where id = coalesce(:i, id)
अनुरोध के अनुसार, एक 'सबूत' यह वास्तव में सूचकांक का उपयोग करता है:
create table x ( id number(15) null );
create unique index x_pk on x( id );
select id
from x
where id = coalesce(:x, id)
; -- Uses index
select id
from x
where id = :x or :x is null
; -- Full table scan
योजना: