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