sql >> Base de Datos >  >> RDS >> Oracle

Oráculo. Seleccione todo si el parámetro es nulo; de lo contrario, devuelva un problema de artículo específico

Simplemente use coalesce . Es la forma más legible y comprensible de escribir esto. Dado que la lógica está contenida en un predicado, es más fácil de mantener y eliminar:

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

Según lo solicitado, una 'prueba' que en realidad usa el índice:

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

Plano: