V databázi Oracle je to COALESCE() funkce vrací první nenulový výraz ze seznamu výrazů.
Syntaxe
Syntaxe vypadá takto:
COALESCE(expr [, expr ]...) Musí být předány alespoň dva výrazy.
Příklad
Zde je příklad k demonstraci:
SELECT COALESCE(null, 7)
FROM DUAL; Výsledek:
7
Zde je několik dalších příkladů:
SET NULL 'null';
SELECT
COALESCE(null, null, 1, 2, 3) AS "r1",
COALESCE(1, null, 2, 3) AS "r2",
COALESCE(null, 3, 2, 1) AS "r3",
COALESCE(1, 2, 3, null) AS "r4",
COALESCE(null, null) AS "r5"
FROM DUAL; Výsledek:
r1 r2 r3 r4 r5 _____ _____ _____ _____ _______ 1 1 3 1 null
Vidíme, že COALESCE() vrátí null když jsou všechny argumenty null.
Ohledně prvního řádku SET NULL 'null'; , přidal jsem to, aby moje relace SQLcl vrátila null vždy, když je výsledek nulový.
Ve výchozím nastavení vrátí SQLcl a SQL*Plus prázdné místo vždy, když null dochází v důsledku SQL SELECT prohlášení.
Můžete však použít SET NULL určit jiný řetězec, který má být vrácen. Zde jsem uvedl, že řetězec null by měl být vrácen.
Příklad databáze
Předpokládejme, že spustíme následující dotaz:
SET NULL 'null';
SELECT
LOCATION_ID,
STATE_PROVINCE
FROM LOCATIONS
ORDER BY LOCATION_ID ASC
FETCH FIRST 6 ROWS ONLY; Výsledek:
LOCATION_ID STATE_PROVINCE ______________ ___________________ 1000 null 1100 null 1200 Prefektura Tokio 1300 null 1400 Texas 1500 KalifornieVidíme, že několik řádků je
nullvSTATE_PROVINCEsloupec.Zde je dotaz znovu, ale tentokrát používáme
COALESCE()protiSTATE_PROVINCEsloupec:SELECT LOCATION_ID, COALESCE(STATE_PROVINCE, 'N/A') FROM LOCATIONS ORDER BY LOCATION_ID ASC FETCH FIRST 6 ROWS ONLY;Výsledek:
COALESCE LOCATION_ID (STATE_PROVINCE,'N/A') ______________ _________________________________ 1000 N/A 1100 N/A 1100 N/A 100 N/A prefekt Kalifornie 1200 N/A 1200 N/A prefekta 1200Použili jsme tedy
COALESCE()vrátíteN/Akdykoli dojde k hodnotě null.
COALESCE()vsCASENásledující:
COALESCE(expr1, expr2)Je ekvivalentní tomuto:
CASE WHEN expr1 IS NOT NULL THEN expr1 ELSE expr2 ENDNeplatný počet argumentů
Volání funkce bez předání jakýchkoli argumentů má za následek chybu:
SELECT COALESCE() FROM DUAL;Výsledek:
Chyba SQL:ORA-00938:nedostatek argumentů pro funkci00938. 00000 - "nedostatek argumentů pro funkci"