sql >> Databáze >  >> RDS >> MariaDB

Jak COALESCE() funguje v MariaDB

V MariaDB, COALESCE() Operátor vrátí první hodnotu v seznamu, která není NULL, nebo NULL, pokud neexistují žádné jiné hodnoty než NULL.

Syntaxe

Syntaxe vypadá takto:

COALESCE(value,...)

Příklad

Zde je jednoduchý příklad k demonstraci:

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

Výsledek:

Red

V tomto případě Red byla první hodnota bez NULL, a tak COALESCE() vrátil tuto hodnotu.

Black byl také jiný než NULL, ale přišel po Red a tak to nebylo vráceno.

Příklad databáze

Předpokládejme, že spustíme následující dotaz:

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

A dostaneme následující výsledek:

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

Vidíme, že poslední dva řádky mají ve sloupci DOB hodnoty NULL.

Pokud bychom chtěli nahradit NULL s jinou hodnotou bychom mohli dotaz změnit následovně:

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

Výsledek:

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

Výrazy

COALESCE() vrátí aktuální hodnotu prvního výrazu, který se zpočátku nevyhodnotí jako NULL . Pokud tedy předáme výraz jako tento:

SELECT COALESCE( null, 5 * 2 );

Dostáváme toto:

10

Když jsou všechny hodnoty NULL

Pokud jsou všechny hodnoty NULL , COALESCE() vrátí NULL :

SELECT COALESCE( null, null );

Výsledek:

NULL

COALESCE() vs IFNULL()

Při použití se dvěma hodnotami COALESCE() funguje stejně jako IFNULL :

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

Výsledek:

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

Neplatný počet argumentů

Pomocí COALESCE() bez jakýchkoli argumentů vede k chybě:

SELECT COALESCE();

Výsledek:

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. Jak ignorovat chyby pomocí psql \copy meta-command

  2. Začínáme s aplikací Oracle Application Express-APEX

  3. WITH CHECK ADD CONSTRAINT následované CHECK CONSTRAINT vs. ADD CONSTRAINT

  4. Jak aktualizovat/smazat prvky ze dvou různých tabulek SQLite