Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Wyrocznia. Zaznacz wszystko, jeśli parametr ma wartość null, w przeciwnym razie zwróć konkretny problem z przedmiotem

Po prostu użyj coalesce . Jest to najbardziej czytelny i zrozumiały sposób na napisanie tego. Ponieważ logika jest zawarta w jednym predykacie, łatwiej jest utrzymać i usunąć:

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

Zgodnie z żądaniem „dowód”, który faktycznie używa indeksu:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pokaż wszystkie instancje, które powinny być dynamicznie rejestrowane w odbiorniku

  2. JDBC Cienka Oracle 11g

  3. Funkcja SOUNDEX() w Oracle

  4. Zautomatyzowane narzędzie do migracji schematów Oracle

  5. Wpływ na wydajność używania (DBMS_RLS) Oracle Row Level Security (RLS)?