Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL ISNULL() erklärt

In MySQL die ISNULL() Mit der Funktion können wir prüfen, ob ein Wert null ist oder nicht. Wenn es null ist , dann 1 wird zurückgegeben, sonst 0 zurückgegeben wird.

Syntax

ISNULL(expr)

Beispiel

Hier ist ein einfaches Beispiel zur Veranschaulichung:

SELECT ISNULL( null );

Ergebnis:

1

In diesem Fall ist der Ausdruck null und so ist die Ausgabe 1 .

Hier ist es mit einem Nicht-null Wert:

SELECT ISNULL( 'Cake' );

Ergebnis:

0

Diesmal ist das Ergebnis 0 (weil der Ausdruck nicht null ist ).

Ausdrücke

ISNULL() überprüft das Ergebnis eines beliebigen Ausdrucks. Wenn wir also zum Beispiel Folgendes tun:

SELECT ISNULL( 3 / 0 );

Wir bekommen das:

1

Obwohl wir null nicht angegeben haben als Argument ist das Ergebnis des Ausdrucks null , und so ISNULL() gibt 1 zurück .

Dies kann mit dem nächsten Beispiel deutlicher demonstriert werden:

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

Ergebnis:

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

In der ersten Spalte sehen wir, dass die Berechnung selbst zu einem Nullwert geführt hat und die zweite Spalte daher 1 zurückgegeben hat .

Wo wir gerade dabei sind, hier sind die Warnungen:

SHOW WARNINGS

Ergebnis:

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

Wir werden gewarnt, dass wir versucht haben, durch Null zu dividieren (was zu einem Nullwert führt).

Datenbankbeispiel

Angenommen, wir haben eine Datenbanktabelle wie diese:

SELECT * FROM Pets;

Ergebnis:

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

Hier ist eine Abfrage, die ISNULL() verwendet Funktion gegen diese Tabelle:

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

Ergebnis:

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

In diesem Fall haben wir eine Spalte erstellt, die 1 anzeigt für alle Haustiere, die nichts in ihrer DOB-Spalte haben.

Angenommen, wir möchten alle Haustiere zurückgeben, für die kein Geburtsdatum angegeben ist (d. h. ihr DOB Feld ist null ). In diesem Fall können wir Folgendes tun:

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

Ergebnis:

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

Das ergibt dasselbe Ergebnis wie Folgendes:

SELECT * FROM Pets
WHERE DOB IS NULL;

Ergebnis:

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