Oracle
 sql >> Base de données >  >> RDS >> Oracle

Oracle. Tout sélectionner si le paramètre est nul, sinon renvoyer un problème d'article spécifique

Utilisez simplement coalesce . C'est la manière la plus lisible et la plus compréhensible d'écrire cela. Étant donné que la logique est contenue dans un prédicat, il est plus facile de la maintenir et de la supprimer :

select * from job where id = coalesce(:i, id)

Comme demandé, une 'preuve' qui utilise en fait l'index :

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

Forfait :