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));