Nejlepší odpověď
Funkce NVL společnosti Oracle umožňuje nahradit null řetězcem ve výsledcích Je užitečné se zbavit nulových hodnot.
Zde je syntaxe:
NVL(exp\_to\_check, replacement\_value)
Pokud exp\_to\_check
je null, pak NLV () vrátí replacement\_value
. Pokud exp\_to\_check
není null, pak NLV () vrací exp\_to\_check
.
Ačkoli nejde o přesnou shodu, funkce COALESCE () PostgreSQL poskytuje velmi podobnou funkci. Přijímá neomezený počet argumentů a vrací první argument, který není null. Pokud jsou všechny argumenty null, funkce COALESCE
vrátí null. Jeho syntaxe je:
COALESCE (argument\_1, argument\_2, …)
Zde je několik základních příkladů pro ilustraci pomocí mého Navicat pro klienta pro vývoj databáze PostgreSQL :
Použití COALESCE () ve skutečném dotazu
Zde je realističtější příklad použití ukázkové databáze Sakila:
Tabulka adres obsahuje pole adresy a adresy2. Druhá z nich může být nulová. Můžeme je nahradit pomocí hodnoty „N / A“ pomocí funkce COALESCE ().
Líbí se mi, že mi může editor dotazů Navicat ukázat a dokonce do mých dotazů vložit správnou syntaxi.
Zde je kompletní dotaz a výsledky:
Vidíte, že byly převedeny hodnoty null address2.
S pozdravem!
Adam
Odpověď
COALESCE
Jistě, NVL
je kratší název, ale víte co?
- Nikdo nechápe, co znamená
NVL
. Je těžké vysvětlit noobs. -
NVL
trvá pouze 2 argumenty, zatímcoCOALESCE
trvá libovolné číslo . -
COALESCE
je součástí standardního SQL ANSI. Každá databáze SQL to podporuje, včetně Oracle. Pouze Oracle podporujeNVL
(a očividně také Informix; viz komentáře).