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

Как NVL() работи в MariaDB

От MariaDB 10.3, NVL() може да се използва като псевдоним за IFNULL() функция. Следователно и двете функции ни позволяват да заменим NULL стойности с друга стойност.

Синтаксис

NVL(expr1,expr2)

Ако expr1 не е NULL , NVL() връща expr1 ; в противен случай връща expr2 .

Даден е NVL() е псевдоним за IFNULL() , можем също да използваме следния синтаксис:

IFNULL(expr1,expr2)

И двата горни синтаксиса връщат един и същ резултат.

Пример

Ето основен пример, който използва NULL константа:

SELECT NVL( null, 'No Value' );

Резултат:

No Value

В този случай използвах NVL() за да замените стойността NULL с No Value .

Ето какво се случва, когато първият аргумент не е NULL :

SELECT NVL( 'Spicy', 'No Value' );

Резултат:

Green

В този случай се връща първият аргумент, защото не е NULL .

Пример за база данни

Да предположим, че изпълняваме следната заявка:

SELECT * FROM Employees;

Резултат:

empId	name	dept
-----   -----   -----
1	Jess	Sales
2	Rohit	NULL
3	Zohan	Sales
4	Homer	NULL

Можем да видим, че два реда имат стойности NULL в dept колона.

В следващата заявка използваме NVL() за да замените стойностите NULL с по-смислена стойност за четеца:

SELECT
    empId,
    name,
    NVL( dept, 'Not yet assigned' ) AS dept
FROM Employees;

Резултат:

empId	name	dept
-----   -----   ----------------
1	Jess	Sales
2	Rohit	Not yet assigned
3	Zohan	Sales
4	Homer	Not yet assigned

Изрази

Изчислява се текущата стойност на първия аргумент. Следователно, ако предоставим израз като следния:

SELECT NVL( 4 * 10, 0 );

Получаваме това:

40

Така че не получаваме 4 * 10 част. Получаваме резултата от този израз (който в този случай е 40 ).

Същото е вярно, когато резултатът от израза е NULL :

SELECT NVL( 4 / 0, 0 );

Резултат:

0.0000

Това обаче е опасен пример. Нулата е стойност. NULL не е.

Връщането на нула, когато има стойност NULL, може да бъде подвеждащо или дори напълно погрешно. Представете си, ако се занимаваме с цени. Можем да получим цена от нула, което може да е неправилно и да струва на бизнеса много пари.

В такива случаи обикновено е по-добре да се използва по-смислена стойност, която да предаде на читателя, че няма стойност.

Пример:

SELECT NVL( 4 / 0, 'No value' );

Резултат:

No Value

IFNULL() Функция

Както споменахме, NVL() е псевдоним за IFNULL() . Следователно можем да заменим NVL() с IFNULL() в някой от горните примери.

Пример:

SELECT IFNULL( 4 / 0, 'No value' );

Резултат:

No Value

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Избягване на блокиране на доставчик на база данни за MySQL или MariaDB

  2. Как да мигрираме WHMCS база данни към MariaDB Galera Cluster

  3. Опции за отказване на клъстер с пълна база данни за няколко облака за клъстер MariaDB

  4. Как работи HOUR() в MariaDB

  5. Как да получите стойности, които не съдържат числа в MariaDB