Hvis et argument er NULL, vil du tage det mindste af de andre argumenter. Hvis alle argumenter er NULL, vil du returnere NULL.
Jeg kan bruge noget som dette til to argumenter:
LEAST(NVL(colA,colB), NVL(colB,colA))
Det begynder dog at blive grimt for>2 argumenter:
LEAST(COALESCE(colA,colB,colC)
,COALESCE(colB,colA,colC)
,COALESCE(colC,colA,colB))
På hvilket tidspunkt ville jeg begynde at overveje magiske værdier; men dette kan være buggy (hvad f.eks. hvis en af værdierne lovligt er den magiske værdi?):
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));