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

Gunakan seperti '%' dan cocokkan nilai NULL dengan NUMBER kolom

Sepertinya Anda membuat hidup ini sulit untuk diri sendiri. Biarkan nol, lalu lakukan:

where (param1 is null or t.col1 like param1)
and (param2 is null or t.col2 like param2)

Jika param1 (argumen prosedur; hidup lebih sederhana ketika parameter/nama variabel dan nama kolom Anda berbeda ... jadi saya telah mengubah nama kolom untuk membuatnya sedikit lebih jelas) adalah nol pada dasarnya diabaikan* dan semua baris melewati bagian itu filter, apakah nilai kolom adalah nol atau tidak nol. Jika param2 adalah tidak null maka is null periksa yang gagal dan hanya baris dengan nilai kolom (bukan-null) yang cocok dengan param2 nilai memenuhi bagian filter tersebut.

* Ketentuan dalam or dapat dievaluasi dalam urutan apa pun; menempatkan is null cek dulu bukan berarti like tidak akan dievaluasi - tetapi pengoptimal cukup pintar dalam hal semacam itu



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mendapatkan input dari pengguna saat runtime

  2. Bagaimana oracle rowid dihasilkan secara internal?

  3. Bagaimana cara mengurangi duplikasi kode yang disebabkan oleh substring dan instring?

  4. Mendapatkan kesalahan saat menjalankan Stroredprocedure

  5. java.time.LocalDate.getDayOfWeek() ke java.util.Calendar.get(DAY_OF_WEEK)