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

Wie COALESCE() in MariaDB funktioniert

In MariaDB die COALESCE() Der Operator gibt den ersten Nicht-NULL-Wert in der Liste zurück, oder NULL, wenn es keine Nicht-NULL-Werte gibt.

Syntax

Die Syntax lautet wie folgt:

COALESCE(value,...)

Beispiel

Hier ist ein einfaches Beispiel zur Veranschaulichung:

SELECT COALESCE(null, 'Red', 'Black');

Ergebnis:

Red

In diesem Fall Red war der erste Nicht-NULL-Wert, also COALESCE() diesen Wert zurückgegeben.

Black war auch nicht NULL, kam aber nach Red und so wurde es nicht zurückgegeben.

Datenbankbeispiel

Angenommen, wir führen die folgende Abfrage aus:

SELECT
    PetName,
    DOB AS "Date of Birth"
FROM Pets;

Und wir erhalten das folgende Ergebnis:

+---------+---------------+
| PetName | Date of Birth |
+---------+---------------+
| 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          |
+---------+---------------+

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

Wenn wir NULL ersetzen wollten mit einem anderen Wert könnten wir die Abfrage wie folgt ändern:

SELECT
    PetName,
    COALESCE(DOB, 'None Supplied') AS "Date of Birth"
FROM Pets;

Ergebnis:

+---------+---------------+
| PetName | Date of Birth |
+---------+---------------+
| 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 |
+---------+---------------+

Ausdrücke

COALESCE() gibt den aktuellen Wert des ersten Ausdrucks zurück, der anfänglich nicht zu NULL ausgewertet wird . Wenn wir also einen Ausdruck wie diesen übergeben:

SELECT COALESCE( null, 5 * 2 );

Wir bekommen das:

10

Wenn alle Werte NULL sind

Wenn alle Werte NULL sind , COALESCE() gibt NULL zurück :

SELECT COALESCE( null, null );

Ergebnis:

NULL

COALESCE() vs IFNULL()

Bei Verwendung mit zwei Werten COALESCE() funktioniert genauso wie IFNULL :

SET @a = null, @b = 52;
SELECT 
    COALESCE(@a, @b), 
    IFNULL(@a, @b);

Ergebnis:

+------------------+----------------+
| COALESCE(@a, @b) | IFNULL(@a, @b) |
+------------------+----------------+
| 52               | 52             |
+------------------+----------------+

Ungültige Argumentanzahl

Verwenden von COALESCE() ohne Argumente führt zu einem Fehler:

SELECT COALESCE();

Ergebnis:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1