sql >> Database >  >> RDS >> MariaDB

Hoe COALESCE() werkt in MariaDB

In MariaDB, de COALESCE() operator retourneert de eerste niet-NULL-waarde in de lijst, of NULL als er geen niet-NULL-waarden zijn.

Syntaxis

De syntaxis gaat als volgt:

COALESCE(value,...)

Voorbeeld

Hier is een eenvoudig voorbeeld om te demonstreren:

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

Resultaat:

Red

In dit geval Red was de eerste niet-NULL-waarde, en dus COALESCE() heeft die waarde geretourneerd.

Black was ook niet-NULL, maar kwam na Red en dus werd het niet teruggestuurd.

Databasevoorbeeld

Stel dat we de volgende query uitvoeren:

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

En we krijgen het volgende resultaat:

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

We kunnen zien dat de laatste twee rijen NULL-waarden hebben in de DOB-kolom.

Als we NULL willen vervangen met een andere waarde, kunnen we de zoekopdracht als volgt wijzigen:

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

Resultaat:

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

Uitdrukkingen

COALESCE() geeft de huidige waarde terug van de eerste uitdrukking die aanvankelijk niet resulteert in NULL . Daarom, als we een uitdrukking als deze doorgeven:

SELECT COALESCE( null, 5 * 2 );

We krijgen dit:

10

Als alle waarden NULL zijn

Als alle waarden NULL zijn , COALESCE() retourneert NULL :

SELECT COALESCE( null, null );

Resultaat:

NULL

COALESCE() vs IFNULL()

Bij gebruik met twee waarden, COALESCE() werkt hetzelfde als IFNULL :

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

Resultaat:

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

Ongeldig aantal argumenten

COALESCE() gebruiken zonder argumenten resulteert in een fout:

SELECT COALESCE();

Resultaat:

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. Escape SQL LIKE-waarde voor Postgres met psycopg2

  2. De evolutie en toekomst van Microsoft Access

  3. Aandacht besteden aan schattingen

  4. Heeft uw bedrijf een HR-database nodig?