In MariaDB der IFNULL()
Funktion erlaubt es uns, NULL-Werte durch einen anderen Wert zu ersetzen.
Syntax
IFNULL(expr1,expr2)
Wenn expr1
ist nicht NULL
, IFNULL()
gibt expr1
zurück ; andernfalls wird expr2
zurückgegeben .
Außerdem ab MariaDB 10.3 NVL()
kann als Alias für IFNULL()
verwendet werden Funktion. Daher haben wir die Möglichkeit, stattdessen die folgende Syntax zu verwenden:
NVL(expr1,expr2)
Das Ergebnis ist unabhängig von der verwendeten Syntax dasselbe.
Beispiel
Hier ist ein einfaches Beispiel, das den NULL
verwendet Konstante:
SELECT IFNULL( null, 'No Value' );
Ergebnis:
No Value
In diesem Fall habe ich IFNULL()
verwendet um den NULL-Wert durch No Value
zu ersetzen .
Folgendes passiert, wenn das erste Argument nicht NULL
ist :
SELECT IFNULL( 'Spicy', 'No Value' );
Ergebnis:
Spicy
In diesem Fall wird das erste Argument zurückgegeben, da es nicht NULL
ist .
Datenbankbeispiel
Angenommen, wir führen die folgende Abfrage aus:
SELECT * FROM Employees;
Ergebnis:
empId name dept ----- ----- ----- 1 Jess Sales 2 Rohit NULL 3 Zohan Sales 4 Homer NULL
Wir können sehen, dass zwei Zeilen NULL-Werte in dept
haben Spalte.
In der folgenden Abfrage verwenden wir IFNULL()
um die NULL-Werte durch einen aussagekräftigeren Wert für den Leser zu ersetzen:
SELECT
empId,
name,
IFNULL( dept, 'Not yet assigned' ) AS dept
FROM Employees;
Ergebnis:
empId name dept ----- ----- ---------------- 1 Jess Sales 2 Rohit Not yet assigned 3 Zohan Sales 4 Homer Not yet assigned
Ausdrücke
Der aktuelle Wert des ersten Arguments wird ausgewertet. Wenn wir also einen Ausdruck wie den folgenden angeben:
SELECT IFNULL( 3 * 7, 0 );
Wir bekommen das:
21
Wir bekommen also nicht 3 * 7
Teil. Wir erhalten das Ergebnis dieses Ausdrucks (in diesem Fall 21
).
Dasselbe gilt, wenn das Ergebnis des Ausdrucks NULL
ist . Wenn wir zum Beispiel den folgenden Code ausführen:
SELECT IFNULL( 3 / 0, 0 );
Wir bekommen das:
0.0000
Dies ist jedoch ein gefährliches Beispiel. Null ist ein Wert. NULL
ist nicht.
Null zurückzugeben, wenn es einen NULL-Wert gibt, könnte irreführend oder sogar völlig falsch sein. Stellen Sie sich vor, wir hätten es mit Preisen zu tun. Wir könnten am Ende einen Preis von Null erhalten, was falsch sein und das Unternehmen viel Geld kosten könnte.
Daher ist es in solchen Fällen normalerweise besser, einen aussagekräftigeren Wert zu verwenden, der dem Leser vermittelt, dass es keinen Wert gibt.
Beispiel:
SELECT IFNULL( 3 / 0, 'No value' );
Ergebnis:
No Value
Der NVL()
Funktion
Beginnend mit MariaDB 10.3, NVL()
ist ein Alias für IFNULL()
. Daher können wir IFNULL()
ersetzen mit NVL()
in einem der obigen Beispiele.
Beispiel:
SELECT NVL( 3 / 0, 'No value' );
Ergebnis:
No Value