Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Peramal. Pilih semua jika parameternya nol, jika tidak, kembalikan masalah item tertentu

Cukup gunakan coalesce . Ini adalah cara yang paling mudah dibaca dan dimengerti untuk menulis ini. Karena logikanya terkandung dalam satu predikat, lebih mudah untuk mempertahankan dan menghapusnya:

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

Seperti yang diminta, 'bukti' ini sebenarnya menggunakan indeks:

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

Rencana:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL yang sangat sederhana Bukan ekspresi GROUP BY - Oracle

  2. Sertakan nilai RowId di Tabel Bersarang

  3. Jalankan SQL dari file batch

  4. Cara mengubah pengaturan untuk Pengembang SQL untuk mengenali versi SDK saat ini dengan benar

  5. Mengapa mendapatkan Kesalahan ORA-00937