Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да използвате функцията NVL() в Oracle

Този урок на Oracle SQL предоставя обяснения, примери за NVL функцията в Oracle

Какво е функцията NVL() в Oracle

Функцията NVL в Oracle е функция за влагане, която се използва за заместване на нулеви стойности с определени стойности

В горния синтаксис

израз1 :това е изходните стойности или израз, който може да съдържа null. Можете да предоставите име на колона, функция за име на колона
expr2:Това е целевата стойност, която ще бъде поставена в случай, че null бъде върната от expr1

Ако expr1 е нула, тогава NVL връща expr2. Ако expr1 не е нула, тогава NVL връща expr1.

Важни точки за отбелязване
(1) Аргументите expr1 и expr2 могат да имат произволен тип данни. Ако техните типове данни са различни, тогава Oracle Database имплицитно преобразува единия в друг. Ако те не могат да бъдат преобразувани имплицитно, базата данни връща грешка.
Ако expr1 е символни данни, тогава Oracle Database преобразува expr2 в типа данни на expr1, преди да ги сравни и връща VARCHAR2 в набора от знаци на expr1.

Ако expr1 е числов, тогава Oracle определя кой аргумент има най-висок числов приоритет, имплицитно преобразува другия аргумент в този тип данни и връща този тип данни.

Така че следното изявление би било успешно

изберете nvl(num-col ,10) от изберете nvl(char-col ,'NA') от 
изберете nvl(end_date,'01-MAY-18') от

Следното изявление би направило имплицитно преобразуване

изберете nvl(char-col ,1) от 

Следното изявление ще се провали

изберете nvl(end_date,'m/a') от 
изберете nvl(user_id,'abc') от

Как да използвам функцията NVL()


Тази функция е много полезна, когато не искаме да връщаме нулеви стойности или в числовото изчисление, тъй като null би превърнало целите стойности в null

Нека вземете пример, за да го разберете
Имаме таблица sales_people, която съдържа продажбите, извършени от продавачи, % комисионна от продажбите, заплатата на хората. Искаме да изчислим общите месечни доходи на търговците. Продажбите могат да имат нулеви стойности

Изявлението би било

изберете име,(заплата + продажби*комисионна/100)  Месечен_доход от sales_people;

Той ще върне нулеви стойности на всички хора, които не са извършили никакви продажби през този период, тъй като изчислението ще има нулеви стойности

Това може да бъде коригирано с помощта на функцията nvl като

изберете име,(заплата + nvl(sales,0)*commission/100) Месечен_доход от sales_people;

Така че очевидно е много полезно, докато правите математически операции. NVL функцията в Oracle е доста полезна функция и може да се използва на много места

Също чете
функции за дата на oracle sql
функция NULLIF в Oracle
изявление за актуализиране в oracle
функция за сливане в Oracle
промяна на формата на датата в 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. Как да разберете дали дадена стойност съществува в рамките на VARRAY

  2. Как мога да поправя тази грешка:не се поддържа SQL92?

  3. Oracle :изберете максимална стойност от различни колони на същия ред

  4. Обяснете болната точка за планиране на разходите

  5. АКТУАЛИЗИРАНЕ с CASE и IN - Oracle