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

MySQL ISNULL() Обяснено

В MySQL, ISNULL() функцията ни позволява да проверим дали дадена стойност е null или не. Ако е null , след това 1 се връща, в противен случай 0 се връща.

Синтаксис

ISNULL(expr)

Пример

Ето един прост пример за демонстрация:

SELECT ISNULL( null );

Резултат:

1

В този случай изразът е null и така изходът е 1 .

Ето го с не-null стойност:

SELECT ISNULL( 'Cake' );

Резултат:

0

Този път резултатът е 0 (тъй като изразът не е null ).

Изрази

ISNULL() проверява резултата от всеки израз. Така че, ако направим следното, например:

SELECT ISNULL( 3 / 0 );

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

1

Така че въпреки че не посочихме null като аргумент, резултатът от израза е null , и така ISNULL() връща 1 .

Това може да се демонстрира по-ясно със следващия пример:

SELECT 
    3 / 0,
    ISNULL( 3 / 0 );

Резултат:

+-------+-----------------+
| 3 / 0 | ISNULL( 3 / 0 ) |
+-------+-----------------+
|  NULL |               1 |
+-------+-----------------+
1 row in set, 2 warnings (0.00 sec)

В първата колона можем да видим, че самото изчисление е довело до нулева стойност и така втората колона върна 1 .

Докато сме на това, ето предупрежденията:

SHOW WARNINGS

Резултат:

+---------+------+---------------+
| Level   | Code | Message       |
+---------+------+---------------+
| Warning | 1365 | Division by 0 |
| Warning | 1365 | Division by 0 |
+---------+------+---------------+

Предупредени сме, че се опитахме да разделим на нула (което води до нулева стойност).

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

Да предположим, че имаме таблица с база данни като тази:

SELECT * FROM Pets;

Резултат:

+-------+-----------+---------+---------+------------+
| PetId | PetTypeId | OwnerId | PetName | DOB        |
+-------+-----------+---------+---------+------------+
|     1 |         2 |       3 | Fluffy  | 2020-11-20 |
|     2 |         3 |       3 | Fetch   | 2019-08-16 |
|     3 |         2 |       2 | Scratch | 2018-10-01 |
|     4 |         3 |       3 | Wag     | 2020-03-15 |
|     5 |         1 |       1 | Tweet   | 2020-11-28 |
|     6 |         3 |       4 | Fluffy  | 2020-09-17 |
|     7 |         3 |       2 | Bark    | NULL       |
|     8 |         2 |       4 | Meow    | NULL       |
|     9 |         3 |       1 | Woof    | 2020-10-03 |
|    10 |         4 |       5 | Ears    | 2022-01-11 |
+-------+-----------+---------+---------+------------+

Ето заявка, която използва ISNULL() функция спрямо тази таблица:

SELECT
    PetId,
    PetName,
    ISNULL( DOB ) AS "DOB is Missing?"
FROM Pets;

Резултат:

+-------+---------+-----------------+
| PetId | PetName | DOB is Missing? |
+-------+---------+-----------------+
|     1 | Fluffy  |               0 |
|     2 | Fetch   |               0 |
|     3 | Scratch |               0 |
|     4 | Wag     |               0 |
|     5 | Tweet   |               0 |
|     6 | Fluffy  |               0 |
|     7 | Bark    |               1 |
|     8 | Meow    |               1 |
|     9 | Woof    |               0 |
|    10 | Ears    |               0 |
+-------+---------+-----------------+

В този случай създадохме колона, която показва 1 за всички домашни любимци, които нямат нищо в колоната си DOB.

Да приемем, че искаме да върнем всички домашни любимци, които нямат посочена дата на раждане (т.е. техния DOB полето е null ). В този случай можем да направим следното:

SELECT * FROM Pets
WHERE ISNULL(DOB) = 1;

Резултат:

+-------+-----------+---------+---------+------+
| PetId | PetTypeId | OwnerId | PetName | DOB  |
+-------+-----------+---------+---------+------+
|     7 |         3 |       2 | Bark    | NULL |
|     8 |         2 |       4 | Meow    | NULL |
+-------+-----------+---------+---------+------+

Това дава същия резултат като извършването на следното:

SELECT * FROM Pets
WHERE DOB IS NULL;

Резултат:

+-------+-----------+---------+---------+------+
| PetId | PetTypeId | OwnerId | PetName | DOB  |
+-------+-----------+---------+---------+------+
|     7 |         3 |       2 | Bark    | NULL |
|     8 |         2 |       4 | Meow    | NULL |
+-------+-----------+---------+---------+------+


  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:MySQL/MariaDB индекси

  2. Как да преномерирате първичния индекс

  3. Spring, Hibernate, Blob мързеливо зареждане

  4. Как да настроите асинхронна репликация от Galera Cluster към самостоятелен MySQL сървър с GTID

  5. Попълнете падащо меню от mySQL таблица в PHP