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. -
NVLprzyjmuje tylko 2 argumenty, podczas gdyCOALESCEprzyjmuje dowolną liczbę . -
COALESCEjest 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).