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

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

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

Синтаксис

IFNULL(expr1,expr2)

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

Също така, от MariaDB 10.3, NVL() може да се използва като псевдоним за IFNULL() функция. Следователно имаме опцията вместо това да използваме следния синтаксис:

NVL(expr1,expr2)

Резултатът е един и същ, независимо кой синтаксис се използва.

Пример

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

SELECT IFNULL( null, 'No Value' );

Резултат:

No Value

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

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

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

Резултат:

Spicy

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

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

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

SELECT * FROM Employees;

Резултат:

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

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

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

SELECT
    empId,
    name,
    IFNULL( 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 IFNULL( 3 * 7, 0 );

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

21

Така че не получаваме 3 * 7 част. Получаваме резултата от този израз (който в този случай е 21 ).

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

SELECT IFNULL( 3 / 0, 0 );

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

0.0000

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

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

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

Пример:

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

Резултат:

No Value

NVL() Функция

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

Пример:

SELECT NVL( 3 / 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. Балансиране на натоварването на MariaDB MaxScale на Docker:Управление:Част втора

  2. MariaDB JSON_DETAILED() Обяснено

  3. Как да постигнем PCI съответствие за MySQL и MariaDB с ClusterControl - Повторението

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

  5. Преглед на MariaDB Xpand (бивш ClustrixDB)