Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak używać funkcji NVL() w Oracle

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Co to jest operator konkatenacji ciągów w Oracle?

  2. Najpopularniejsze pytania dotyczące JAVA/JRE w aplikacjach Oracle

  3. Jak uzyskać wartość UTC dla SYSDATE w Oracle?

  4. Czytanie clob linia po linii z pl\sql

  5. Oracle usuwa wiersze z wielu tabel