sql >> Databasteknik >  >> RDS >> Oracle

Orakel. Välj alla om parametern är null, annars returneras ett specifikt artikelproblem

Använd bara coalesce . Det är det mest läsbara och begripliga sättet att skriva detta. Eftersom logiken finns i ett predikat är det lättare att underhålla och ta bort:

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

Som efterfrågat använder ett "bevis" detta faktiskt indexet:

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. MySQL – ELT() och FILED() funktioner för att extrahera indexposition från listan

  2. MySQL Matcha mot med flera värden till MOT

  3. MYSQL UPPDATERING SET på samma kolumn men med flera WHERE-klausuler

  4. PostgreSQL:Inaktivera anslutningar tillfälligt