MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

Wie IFNULL() in MariaDB funktioniert

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