sql >> Database teknologi >  >> RDS >> Oracle

Oracle. Vælg alle, hvis parameteren er null, ellers returnerer et specifikt vareproblem

Du skal blot bruge coalesce . Det er den mest læsbare og forståelige måde at skrive dette på. Da logikken er indeholdt i et prædikat, er det nemmere at vedligeholde og fjerne:

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

Som anmodet, et 'bevis' dette bruger faktisk indekset:

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

Plan:



  1. Laravel Database Strict Mode

  2. Brug af net/ssh/gateway til at etablere ssh-tunnel til mysql

  3. Får fejl Kommandoer ude af synkronisering, du kan ikke køre kommandoen nu, mens du udfører en lagret procedure i mysql/PHP

  4. Lagring af flere værdier for et enkelt felt i en database