Ten samouczek Oracle SQL zawiera wyjaśnienia, przykłady funkcji NVL w Oracle
Co to jest funkcja NVL() w Oracle
Funkcja NVL w Oracle to funkcja zagnieżdżania, która służy do zastępowania wartości null pewnymi wartościami
W powyższej składni
wyr1 :są to wartości źródłowe lub wyrażenie, które może zawierać wartość null. Możesz podać nazwę kolumny, funkcję na nazwie kolumny
wyrażenie2:Jest to wartość docelowa, która zostanie umieszczona w przypadku zwrócenia wartości null z wyrażenia1
Jeśli wyr1 ma wartość null, to NVL zwraca wyr2. Jeśli wyrażenie1 nie jest puste, NVL zwraca wyrażenie1.
Ważne punkty do zapamiętania
(1) Argumenty wyr1 i wyr2 mogą mieć dowolny typ danych. Jeśli ich typy danych są różne, Oracle Database niejawnie konwertuje jeden na drugi. Jeśli nie można ich niejawnie przekonwertować, baza danych zwraca błąd.
Jeśli wyrażenie1 jest danymi znakowymi, Oracle Database konwertuje wyrażenie2 na typ danych wyrażenie1 przed ich porównaniem i zwraca VARCHAR2 w zestawie znaków wyrażenia1.
Jeśli wyrażenie 1 jest liczbowe, Oracle określa, który argument ma najwyższy priorytet liczbowy, domyślnie konwertuje inny argument na ten typ danych i zwraca ten typ danych.
Więc następująca wypowiedź odniosłaby sukces
select nvl(num-col ,10) from <table> select nvl(char-col ,'NA') from <table> select nvl(end_date,'01-MAY-18') from <table>
Poniższa instrukcja wykona niejawną konwersję
select nvl(char-col ,1) from <table>
Następujące stwierdzenie nie powiedzie się
select nvl(end_date,'m/a') from <table> select nvl(user_id,'abc') from <table>
Jak używać funkcji NVL()
Ta funkcja jest bardzo przydatna, gdy nie chcemy zwracać wartości null lub w obliczeniach numerycznych, ponieważ null zamieniłby całe wartości na null
Zróbmy weź przykład, aby to zrozumieć
Mamy tabelę sales_people, która zawiera sprzedaż dokonaną przez sprzedawców, % prowizji od sprzedaży, wynagrodzenie osób. Chcemy obliczyć całkowite miesięczne dochody sprzedawców. Sprzedaż może mieć wartości zerowe
Oświadczenie byłoby
select name,(salary + sales*commission/100) Monthy_income from sales_people;
Zwróci wartości null wszystkich osób, które nie dokonały żadnej sprzedaży w tym okresie, ponieważ obliczenia będą miały wartości null
Można to naprawić za pomocą funkcji nvl jako
select name,(salary + nvl(sales,0)*commission/100) Monthly_income from sales_people;
Jest więc wyraźnie bardzo pomocny podczas wykonywania operacji matematycznych. Funkcja NVL w Oracle jest całkiem przydatną funkcją i może być używana w wielu miejscach
Też czyta
Oracle sql funkcje daty
Funkcja NULLIF w Oracle
Uaktualnij instrukcję w Oracle
Funkcja łączenia w Oracle
zmień format daty w Oracle
https://docs .oracle.com/cd/B19306_01/server.102/b14200/functions105.htm