sql >> Databáze >  >> RDS >> Oracle

Věštec. Vybrat vše, pokud je parametr null, jinak vrátit konkrétní problém s položkou

Jednoduše použijte coalesce . Je to nejčitelnější a nejsrozumitelnější způsob, jak to napsat. Protože je logika obsažena v jednom predikátu, je snazší ji udržovat a odstraňovat:

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

Jak bylo požadováno, „důkaz“ ve skutečnosti používá 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

Plán:



  1. Přestaňte prosím používat tento anti-vzor UPSERT

  2. vrátit řádky na výchozí hodnotu sloupce mysql

  3. java.net.ConnectException:nepodařilo se připojit k localhost/127.0.0.1 (port 80):připojení se nezdařilo:ECONNREFUSED (připojení odmítnuto)

  4. Porozumění MySQL TRUNCATE TABLE pomocí praktických příkladů