Najlepsza odpowiedź
Funkcja NVL firmy Oracle umożliwia zastąpienie wartości null ciągiem znaków w wynikach zapytanie. Jest to przydatne do usuwania wartości null.
Oto składnia:
NVL(exp\_to\_check, replacement\_value)
Jeśli exp\_to\_check
ma wartość null, wtedy NLV () zwraca replacement\_value
. Jeśli exp\_to\_check
nie jest zerowe, to NLV () zwraca exp\_to\_check
.
Chociaż nie jest to dokładne dopasowanie, funkcja COALESCE () PostgreSQL zapewnia bardzo podobną funkcjonalność. Przyjmuje nieograniczoną liczbę argumentów i zwraca pierwszy argument, który nie jest zerowy. Jeśli wszystkie argumenty mają wartość null, funkcja COALESCE
zwróci wartość null. Jej składnia to:
COALESCE (argument\_1, argument\_2, …)
Oto kilka podstawowych przykładów do zilustrowania przy użyciu mojego klienta programistycznego Navicat for PostgreSQL :
Używanie COALESCE () w prawdziwym zapytaniu
Oto bardziej realistyczny przykład z wykorzystaniem przykładowej bazy danych Sakila:
Tabela adresów zawiera adres i pole adres2. Ta ostatnia może być zerowa. Możemy je zastąpić wartością „N / A” za pomocą funkcji COALESCE ().
Podoba mi się, że Navicat Query Editor może mi pokazać, a nawet wstawić poprawną składnię do moich zapytań.
Oto pełne zapytanie i wyniki:
Możesz zobaczyć, że puste wartości address2 zostały przekonwertowane.
Pozdrawiam!
Adam
Odpowiedź
COALESCE
Jasne, NVL
to krótsza nazwa, ale wiesz co?
- Nikt nie rozumie, co oznacza
NVL
. Trudno to wyjaśnić noobsom. -
NVL
przyjmuje tylko 2 argumenty, podczas gdyCOALESCE
przyjmuje dowolną liczbę . -
COALESCE
jest częścią standardu SQL ANSI. Obsługuje go każda baza danych SQL, w tym Oracle. Tylko Oracle obsługujeNVL
(i najwyraźniej także Informix; patrz komentarze).