Valeur par défaut SQL si aucune ligne n’est renvoyée

Parfois, les valeurs par défaut sont nécessaires. Normalement, vous pouvez utiliser NVL ou NVL2 lorsque vous obtenez des valeurs NULL comme valeur de retour. Mais il est également possible qu’aucune ligne ne soit renvoyée. Dans ce cas, NVL ou NVL2 ne fonctionne pas, car vous n’obtenez aucune valeur en retour – même pas NULL. Par conséquent, il existe certaines options – comme produire une valeur NULL.

COALESCE

-- Use the COALESCE statement, MAX produces automatic a NULL value
SELECT COALESCE(MAX(dummy), 'Z') result
FROM DUAL
WHERE DUMMY = 'Y'; -- 'X'

NVL and MAX

-- Use the NVL statement, MAX produces automatic a NULL value
SELECT NVL(MAX(dummy), 'Z') result
FROM DUAL
WHERE DUMMY = 'Y'; -- 'X'

EXISTS

-- Use the EXISTS statement in combination with CASE
SELECT CASE
    WHEN EXISTS(SELECT 1
                FROM DUAL
                WHERE DUMMY = 'Y') -- 'X'
    THEN (SELECT DUMMY
          FROM DUAL
          WHERE DUMMY = 'Y') -- 'X'
    ELSE 'Z' result
    END
FROM DUAL;

COUNT and MIN

-- Use the COUNT function in combination with CASE
-- MIN is needed to identify the correct value
SELECT CASE
    WHEN COUNT(1) > 0
        THEN MIN(DUMMY)
        ELSE 'Z'
    END result
FROM DUAL
WHERE DUMMY = 'Y'; -- 'X'