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

MySQL IFNULL() erklärt

MySQL hat ein IFNULL() Funktion, mit der wir NULL-Werte einfach durch andere Werte ersetzen können.

Syntax

IFNULL(expr1,expr2)

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

Beispiel

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

SELECT IFNULL( null, 'n/a' );

Ergebnis:

n/a

In diesem Fall habe ich IFNULL() verwendet um den NULL-Wert durch die Zeichenfolge n/a zu ersetzen .

Folgendes passiert, wenn das erste Argument nicht NULL ist :

SELECT IFNULL( 'Cow', 'n/a' );

Ergebnis:

Cow

In diesem Fall wird das erste Argument zurückgegeben, da es nicht NULL ist .

Datenbankbeispiel

Angenommen, wir führen die folgende Abfrage aus:

SELECT
    PetName,
    DOB
FROM Pets;

Ergebnis:

+---------+------------+
| PetName | DOB        |
+---------+------------+
| Fluffy  | 2020-11-20 |
| Fetch   | 2019-08-16 |
| Scratch | 2018-10-01 |
| Wag     | 2020-03-15 |
| Tweet   | 2020-11-28 |
| Fluffy  | 2020-09-17 |
| Bark    | NULL       |
| Meow    | NULL       |
| Woof    | 2020-10-03 |
| Ears    | 2022-01-11 |
+---------+------------+

Wir können sehen, dass zwei Zeilen NULL-Werte in der DOB-Spalte haben.

In der folgenden Abfrage verwenden wir IFNULL() um die NULL-Werte durch einen aussagekräftigeren Wert für den Leser zu ersetzen:

SELECT
    PetName,
    IFNULL( DOB, 'None supplied' )
FROM Pets;

Ergebnis:

+---------+--------------------------------+
| PetName | IFNULL( DOB, 'None supplied' ) |
+---------+--------------------------------+
| Fluffy  | 2020-11-20                     |
| Fetch   | 2019-08-16                     |
| Scratch | 2018-10-01                     |
| Wag     | 2020-03-15                     |
| Tweet   | 2020-11-28                     |
| Fluffy  | 2020-09-17                     |
| Bark    | None supplied                  |
| Meow    | None supplied                  |
| Woof    | 2020-10-03                     |
| Ears    | 2022-01-11                     |
+---------+--------------------------------+

Ausdrücke

Der aktuelle Wert des ersten Arguments wird ausgewertet. Wenn wir also einen Ausdruck wie den folgenden angeben:

SELECT IFNULL( 2 * 5, 0 );

Wir bekommen das:

10

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

Dasselbe gilt, wenn das Ergebnis des Ausdrucks NULL ist :

SELECT IFNULL( 2 / 0, 0 );

Wir bekommen das:

0.0000

Es lohnt sich jedoch, vorsichtig zu sein. Null ist ein Wert. NULL ist nicht.

Im obigen Beispiel habe ich Null zurückgegeben, wenn es einen NULL-Wert gab, aber das könnte irreführend oder sogar völlig falsch sein. Stellen Sie sich vor, wir würden Preise teilen und das Ergebnis wäre ein Preis von Null. OK, wenn wir einen Preis durch Null teilen, stimmt wahrscheinlich etwas anderes nicht, aber ich bin sicher, Sie verstehen, was ich meine.

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

Beispiel:

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

Ergebnis:

No value