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

Nilai terkecil tetapi tidak NULL di Oracle SQL

Jika ada argumen NULL, Anda ingin mengambil argumen lain yang paling sedikit. Jika semua argumen NULL, Anda ingin mengembalikan NULL.

Saya mungkin menggunakan sesuatu seperti ini untuk dua argumen:

LEAST(NVL(colA,colB), NVL(colB,colA))

Itu mulai menjadi jelek untuk>2 argumen:

LEAST(COALESCE(colA,colB,colC)
     ,COALESCE(colB,colA,colC)
     ,COALESCE(colC,colA,colB))

Pada titik mana saya akan mulai mempertimbangkan nilai-nilai ajaib; tetapi ini bisa menjadi buggy (mis. bagaimana jika salah satu nilai secara sah adalah nilai ajaibnya?):

SELECT CASE WHEN r = maxv THEN NULL ELSE r END AS result
FROM   (SELECT LEAST(NVL(:colA,maxv)
                    ,NVL(:colB,maxv)
                    ,NVL(:colC,maxv)) AS r, maxv
        FROM   (SELECT 9.999999999999999999999999999999999999999e125
                       AS maxv FROM DUAL));


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kumpulan koneksi JDBC musim semi dan hasil InputStream

  2. Oracle:ORA-12154:Masalah TNS:Excel 64-bit/Windows 10 64-bit

  3. Bisakah kita memiliki banyak WITH AS dalam satu sql - Oracle SQL

  4. Pemformatan angka di Oracle menggunakan TO_CHAR

  5. Cara menggunakan Oracle Associative Array dalam kueri SQL