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'