Jaki jest odpowiednik funkcji NVL firmy Oracle w PostgreSQL?


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 gdy COALESCE przyjmuje dowolną liczbę .
  • COALESCE jest częścią standardu SQL ANSI. Obsługuje go każda baza danych SQL, w tym Oracle. Tylko Oracle obsługuje NVL (i najwyraźniej także Informix; patrz komentarze).

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *