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

Wie NVL() in MariaDB funktioniert

Ab MariaDB 10.3, NVL() kann als Alias ​​für IFNULL() verwendet werden Funktion. Daher ermöglichen uns beide Funktionen, NULL-Werte durch andere Werte zu ersetzen.

Syntax

NVL(expr1,expr2)

Wenn expr1 ist nicht NULL , NVL() gibt expr1 zurück ; andernfalls wird expr2 zurückgegeben .

Gegeben NVL() ist ein Alias ​​für IFNULL() , können wir auch die folgende Syntax verwenden:

IFNULL(expr1,expr2)

Beide oben genannten Syntaxen geben das gleiche Ergebnis zurück.

Beispiel

Hier ist ein einfaches Beispiel, das den NULL verwendet Konstante:

SELECT NVL( null, 'No Value' );

Ergebnis:

No Value

In diesem Fall habe ich NVL() verwendet um den NULL-Wert durch No Value zu ersetzen .

Folgendes passiert, wenn das erste Argument nicht NULL ist :

SELECT NVL( 'Spicy', 'No Value' );

Ergebnis:

Green

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 NVL() um die NULL-Werte durch einen aussagekräftigeren Wert für den Leser zu ersetzen:

SELECT
    empId,
    name,
    NVL( 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 NVL( 4 * 10, 0 );

Wir bekommen das:

40

Wir bekommen also nicht 4 * 10 Teil. Wir erhalten das Ergebnis dieses Ausdrucks (in diesem Fall 40 ).

Dasselbe gilt, wenn das Ergebnis des Ausdrucks NULL ist :

SELECT NVL( 4 / 0, 0 );

Ergebnis:

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.

In solchen Fällen ist es normalerweise besser, einen aussagekräftigeren Wert zu verwenden, der dem Leser vermittelt, dass es keinen Wert gibt.

Beispiel:

SELECT NVL( 4 / 0, 'No value' );

Ergebnis:

No Value

Der IFNULL() Funktion

Wie bereits erwähnt, NVL() ist ein Alias ​​für IFNULL() . Daher können wir NVL() ersetzen mit IFNULL() in einem der obigen Beispiele.

Beispiel:

SELECT IFNULL( 4 / 0, 'No value' );

Ergebnis:

No Value