sql >> Database >  >> RDS >> Oracle

Minste waarde maar niet NULL in Oracle SQL

Als een argument NULL is, wil je het minste van de andere argument(en) nemen. Als alle argumenten NULL zijn, wil je NULL retourneren.

Ik zou zoiets als dit kunnen gebruiken voor twee argumenten:

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

Het begint echter lelijk te worden voor>2 argumenten:

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

Op dat moment zou ik magische waarden gaan overwegen; maar dit kan fouten bevatten (bijv. wat als een van de waarden legitiem is de magische waarde?):

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. kon mysql-procedure voor cursors niet compileren

  2. 52 weken vanaf de huidige datum genereren met Postgresql

  3. jQuery UI - Autocomplete versnellen

  4. Converteer tekstvak naar geheel getal