sql >> Database teknologi >  >> RDS >> MariaDB

Hvordan COALESCE() virker i MariaDB

I MariaDB er COALESCE() operatoren returnerer den første ikke-NULL-værdi på listen, eller NULL, hvis der ikke er nogen ikke-NULL-værdier.

Syntaks

Syntaksen ser sådan ud:

COALESCE(value,...)

Eksempel

Her er et simpelt eksempel til at demonstrere:

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

Resultat:

Red

I dette tilfælde Red var den første ikke-NULL værdi, og så COALESCE() returnerede den værdi.

Black var også ikke-NULL, men det kom efter Red og så det blev ikke returneret.

Databaseeksempel

Antag, at vi kører følgende forespørgsel:

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

Og vi får følgende resultat:

+---------+---------------+
| 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          |
+---------+---------------+

Vi kan se, at de sidste to rækker har NULL-værdier i DOB-kolonnen.

Hvis vi ville erstatte NULL med en anden værdi, kunne vi ændre forespørgslen som følger:

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

Resultat:

+---------+---------------+
| 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 |
+---------+---------------+

Udtryk

COALESCE() returnerer den aktuelle værdi af det første udtryk, der oprindeligt ikke evalueres til NULL . Derfor, hvis vi sender et udtryk som dette:

SELECT COALESCE( null, 5 * 2 );

Vi får dette:

10

Når alle værdier er NULL

Hvis alle værdier er NULL , COALESCE() returnerer NULL :

SELECT COALESCE( null, null );

Resultat:

NULL

COALESCE() vs IFNULL()

Når det bruges med to værdier, COALESCE() virker på samme måde som IFNULL :

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

Resultat:

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

Ugyldigt argumentantal

Brug af COALESCE() uden nogen argumenter resulterer i en fejl:

SELECT COALESCE();

Resultat:

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

  1. Database-failover til WordPress-websteder

  2. Top 50 SQL Server-interviewspørgsmål, du skal forberede i 2022

  3. 11 måder at finde dublerede rækker, mens du ignorerer den primære nøgle i SQLite

  4. Hvordan bruger man COUNT i SQL?