Pokud má některý argument hodnotu NULL, chcete mít nejmenší z ostatních argumentů. Pokud jsou všechny argumenty NULL, chcete vrátit hodnotu NULL.
Něco takového bych mohl použít pro dva argumenty:
LEAST(NVL(colA,colB), NVL(colB,colA))
Začíná to být ošklivé pro>2 argumenty:
LEAST(COALESCE(colA,colB,colC)
,COALESCE(colB,colA,colC)
,COALESCE(colC,colA,colB))
V tom okamžiku bych začal uvažovat o magických hodnotách; ale to může být chybné (např. co když jedna z hodnot oprávněně je magickou hodnotu?):
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));