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

PreparedStatement adalah null dalam klausa Where tanpa if conditional (query dinamis) atau nilai-nilai omong kosong

Solusi kerja Anda baik-baik saja (dan mirip dengan apa yang Saya telah menggunakan sebelumnya ). Jika Anda hanya ingin mengikat sekali, Anda dapat menggunakan tampilan CTE atau sebaris untuk memberikan nilai ke kueri sebenarnya:

WITH CTE AS (
    SELECT ? AS REAL_VALUE FROM DUAL
)
SELECT C.*   -- but not * really, list all the columns
FROM CTE
JOIN CUSTOMERS C
ON (CTE.REAL_VALUE IS NULL AND C.CUSTOMER_ID IS NULL)
    OR C.CUSTOMER_ID = CTE.REAL_VALUE

Jadi hanya ada satu placeholder untuk diikat.

Saya tidak benar-benar melihat masalah dengan cabang di sisi Java, kecuali jika permintaan Anda yang sebenarnya jauh lebih rumit dan akan menyebabkan duplikasi yang signifikan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Menemukan Nama Batasan di Oracle

  2. Menghubungkan ke SQL Server, Oracle, DB2 dan MySQL secara bersamaan menggunakan ADO.NET?

  3. Kesalahan yang membingungkan tentang tanda kurung kiri yang hilang dalam pernyataan SQL

  4. Bagaimana cara menghitung kueri berdasarkan hari di Oracle sql

  5. Fungsi OCI8 tidak ditemukan saat dijalankan oleh Apache dengan php5