sql >> Databáze >  >> RDS >> Mysql

MySQL ISNULL() Vysvětleno

V MySQL je to ISNULL() Funkce nám umožňuje zkontrolovat, zda je hodnota null nebo ne. Pokud je null a poté 1 je vráceno, jinak 0 je vráceno.

Syntaxe

ISNULL(expr)

Příklad

Zde je jednoduchý příklad k demonstraci:

SELECT ISNULL( null );

Výsledek:

1

V tomto případě je výraz null a tak výstup je 1 .

Tady je to s nenull hodnota:

SELECT ISNULL( 'Cake' );

Výsledek:

0

Tentokrát je výsledek 0 (protože výraz není null ).

Výrazy

ISNULL() kontroluje výsledek libovolného výrazu. Pokud tedy uděláme například následující:

SELECT ISNULL( 3 / 0 );

Dostáváme toto:

1

Takže ačkoli jsme nezadali null jako argument je výsledkem výrazu null , a tak ISNULL() vrátí 1 .

To lze názorněji demonstrovat na následujícím příkladu:

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

Výsledek:

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

V prvním sloupci vidíme, že samotný výpočet vyústil v nulovou hodnotu, a tak druhý sloupec vrátil 1 .

Když už jsme u toho, zde jsou varování:

SHOW WARNINGS

Výsledek:

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

Byli jsme upozorněni, že jsme se pokusili dělit nulou (což má za následek nulovou hodnotu).

Příklad databáze

Předpokládejme, že máme tabulku databáze jako je tato:

SELECT * FROM Pets;

Výsledek:

+-------+-----------+---------+---------+------------+
| 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 |
+-------+-----------+---------+---------+------------+

Zde je dotaz, který používá ISNULL() funkce proti této tabulce:

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

Výsledek:

+-------+---------+-----------------+
| 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 |
+-------+---------+-----------------+

V takovém případě jsme vytvořili sloupec, který zobrazuje 1 pro všechna domácí zvířata, která nemají ve sloupci DOB nic.

Řekněme, že chceme vrátit všechna domácí zvířata, která nemají uvedené datum narození (tj. jejich DOB pole je null ). V tomto případě můžeme provést následující:

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

Výsledek:

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

Výsledkem je stejný výsledek jako následující postup:

SELECT * FROM Pets
WHERE DOB IS NULL;

Výsledek:

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


  1. Průvodce analýzou dat:Je čas vyniknout pomocí Excelu!

  2. Jak správně vytvořit kompozitní primární klíče - MYSQL

  3. Jak používat Room Persistence Library s předvyplněnou databází?

  4. Zaujměte lidský přístup ke správě dat