SQL-Standardwert, wenn keine Zeile zurückgegeben wird

Manchmal sind Standardwerte erforderlich. Normalerweise können Sie NVL oder NVL2 verwenden, wenn Sie NULL-Werte als Rückgabewert erhalten. Es ist aber auch möglich, dass keine Zeile zurückgegeben wird. In diesem Fall funktioniert NVL oder NVL2 nicht, da Sie keinen Wert zurückbekommen – nicht einmal NULL. Daher gibt es einige Optionen – wie zum Beispiel einen NULL-Wert zu erzeugen.

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'

Mehr über SQL und PL/SQL

Es gibt viele weitere Beiträge über SQL, PL/SQL and SQL developer. Mehr Beispiele und Code Beispiele zum Thema SQL sowie PL/SQL findest du auch im SQL Guide with lots of examples.