いずれかの引数がNULLの場合、他の引数を最小限に抑える必要があります。すべての引数がNULLの場合、NULLを返します。
私は2つの引数に次のようなものを使用するかもしれません:
LEAST(NVL(colA,colB), NVL(colB,colA))
ただし、2つ以上の引数で醜くなり始めます:
LEAST(COALESCE(colA,colB,colC)
,COALESCE(colB,colA,colC)
,COALESCE(colC,colA,colB))
その時点で、私は魔法の値を検討し始めます。ただし、これにはバグがある可能性があります(たとえば、値の1つが合法的にである場合はどうなりますか 魔法の価値?):
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));