sql >> Database teknologi >  >> RDS >> Mysql

MySQL ISNULL() Forklaret

I MySQL er ISNULL() funktion gør det muligt for os at kontrollere, om en værdi er null eller ikke. Hvis den er null , derefter 1 returneres, ellers 0 er returneret.

Syntaks

ISNULL(expr)

Eksempel

Her er et simpelt eksempel til at demonstrere:

SELECT ISNULL( null );

Resultat:

1

I dette tilfælde er udtrykket null og så outputtet er 1 .

Her er det med en ikke-null værdi:

SELECT ISNULL( 'Cake' );

Resultat:

0

Denne gang er resultatet 0 (fordi udtrykket ikke er null ).

Udtryk

ISNULL() kontrollerer resultatet af ethvert udtryk. Så hvis vi for eksempel gør følgende:

SELECT ISNULL( 3 / 0 );

Vi får dette:

1

Så selvom vi ikke specificerede null som argumentet er resultatet af udtrykket null , og så ISNULL() returnerer 1 .

Dette kan tydeligere demonstreres med det næste eksempel:

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

Resultat:

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

I den første kolonne kan vi se, at selve beregningen resulterede i en nulværdi, og så den anden kolonne returnerede 1 .

Mens vi er i gang, er her advarslerne:

SHOW WARNINGS

Resultat:

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

Vi er advaret om, at vi forsøgte at dividere med nul (hvilket resulterer i en nulværdi).

Databaseeksempel

Antag, at vi har en databasetabel som denne:

SELECT * FROM Pets;

Resultat:

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

Her er en forespørgsel, der bruger ISNULL() funktion mod denne tabel:

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

Resultat:

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

I så fald oprettede vi en kolonne, der viser 1 for alle kæledyr, der ikke har noget i deres DOB-kolonne.

Lad os sige, at vi ønsker at returnere alle kæledyr, der ikke har en fødselsdato på listen (dvs. deres DOB feltet er null ). I dette tilfælde kan vi gøre følgende:

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

Resultat:

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

Det giver det samme resultat som at gøre følgende:

SELECT * FROM Pets
WHERE DOB IS NULL;

Resultat:

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


  1. Sådan administreres databaser med phpMyAdmin

  2. Hvordan erklærer og bruger jeg variabler i PL/SQL, som jeg gør i T-SQL?

  3. Rails Migration ændrer kolonne for at bruge Postgres-arrays

  4. SÆT ANTAL PÅ brug