Този урок на 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