Shrnutí: v tomto tutoriálu, se dozvíte, jak používat Oracle COALESCE()
funkce vrátí první ne-null argumenty v seznamu.
Úvod do funkce Oracle COALESCE ()
funkce OracleCOALESCE()
přijímá seznam argumentů a vrací první, který hodnotí hodnotu bez null.,
následující příklad ilustruje syntaxi Oracle COALESCE()
funkce:
V této syntaxi COALESCE()
funkce vrátí první ne-null výraz v seznamu. Vyžaduje alespoň dva výrazy. V případě, že všechny výrazy vyhodnotí null, funkce vrátí null.,
následující příklad vrátí jeden, protože to je první non-null argument:
RESULT---------- 1
následující příklad vrátí hodnotu null, protože všechny argumenty jsou neplatné:
návratový typ
jsou-Li všechny argumenty mají stejný typ dat, COALESCE()
funkce vrací hodnotu datového typu.
pokud mají argumenty různé datové typy, funkce COALESCE()
implicitně převádí všechny argumenty na datový typ prvního argumentu bez null., V případě, že konverze selže, pak Oracle vydá chybu.
následující příklad vrací hodnotu s typem znaku, protože všechny argumenty jsou znaky.,
Podobně následující příklad vrátí hodnotu číselný typ:
RESULT---------- 1
Nicméně, následující příklad používá argumenty pro různé typy COALESCE()
funkce:
Oracle vydal následující chyby:
, Protože COALESCE()
funkce pokusil převést typ znaků z třetí argument číselný typ druhý argument, který vyústil v chybu.,
hodnocení zkratu
funkceCOALESCE()
používá hodnocení zkratu. To znamená, že funkce přestane vyhodnocovat zbývající výrazy, jakmile zjistí, že první z nich vyhodnotí hodnotu bez null.
Vezměme si následující příklad:
V tomto příkladu COALESCE()
funkce vyhodnocena pouze první výraz, protože výsledek první výraz byl dva (1+1). Nehodnotil druhý výraz (1/0). Pokud by tak učinilo, společnost Oracle by divizi vydala nulovou chybou.,
Oracle COALESCE() příklad
pojďme nastavit vzorovou tabulku pro testování.
Předpokládejme, že musíte zaznamenat nouzové kontakty zaměstnanců s různými telefonními čísly: pracovní telefon, domácí telefon a mobilní telefon. To udělat, je vytvořit novou tabulku s názvem emergency_contacts
takto:
následující příkazy vložit nějaké nouzové kontakty do tabulky:
Některé kontakty byly jen pracovní telefon, zatímco jiní mohou mít domácí telefon a mobilní telefon, nebo nemají žádné telefonní číslo.,
následující dotaz načte zaměstnanců a jejich nouzové kontakty s telefonními čísly:
V tomto příkladu jsme použili COALESCE()
funkce vyberte domácí telefon, pracovní telefon, nebo mobilní telefon, pokud každý je k dispozici. V případě, že nejsou k dispozici žádná telefonní čísla, vrátili jsme N/A
doslovný řetězec, který je zkratka pro not available.,
následující obrázek ukazuje výsledek dotazu:
Oracle COALESCE() a v PŘÍPADĚ, že výraz
můžete použít COALESCE()
funkce místo již CASE
výraz, když to přijde k testu na null v více výrazů. COALESCE()
funkce je stručnější nežCASE
výraz, který zahrnuje nulová hodnocení.,
If you check for NULL in two expressions, the COALESCE()
function is equivalent to the CASE
expression.
For example, the following COALESCE()
function:
is equivalent to:
Likewise,
is equivalent to
Oracle COALESCE() vs. NVL()
The COALESCE()
function is a part of SQL ANSI-92 standard while NVL()
function is Oracle specific.,
v případě dvou výrazů se zdá, že funkce COALESCE()
a NVL()
Jsou podobné, ale jejich implementace jsou odlišné. Viz následující příkazy:
oba příkazy vrátí stejný výsledek, který je jeden. Funkce COALESCE()
však vyhodnocuje pouze první výraz pro určení výsledku, zatímco funkce NVL()
vyhodnocuje oba výrazy.,
podívejme se na následující příklad:
výše uvedené prohlášení se vrátil 1 vzhledem k tomu, že následující příklad způsobí chybu:
chyba:
, Protože NVL()
funkce hodnotí druhý výraz 1/0
, který způsobuje chybu.
v tomto tutoriálu jste se naučili používat funkci Oracle COALESCE()
pro Návrat prvního výrazu bez null v seznamu výrazů.
- byl tento tutoriál užitečný?,
- YesNo