V MySQL je to 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, 'Fish', 'Rabbit');
Výsledek:
Fish
V tomto případě Fish
byla první hodnota bez NULL, a tak COALESCE()
vrátil tuto hodnotu.
Rabbit
byla také hodnota bez NULL, ale přišla za Fish
a tak to nebylo vráceno.
Když jsou všechny hodnoty NULL
Pokud jsou všechny hodnoty NULL
, COALESCE()
vrátí NULL
:
SELECT COALESCE( null, null );
Výsledek:
NULL
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, 2 * 10 );
Dostáváme toto:
20
Příklad databáze
Předpokládejme, že spustíme následující dotaz:
SELECT
PetName,
PetType
FROM Pets;
A dostaneme následující výsledek:
PetName PetType ------- ------- Meow Cat Woof Dog Tweet Bird Awk NULL Moo Cow Omph NULL
Vidíme, že 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(PetType, 'Unknown') AS "PetType"
FROM Pets;
Výsledek:
PetName PetType ------- ------- Meow Cat Woof Dog Tweet Bird Awk Unknown Moo Cow Omph Unknown
V tomto případě jsme nahradili všechny hodnoty NULL řetězcem Unknown
.
Nemusí to však být řetězec. Zde je další příklad, který nahrazuje hodnoty NULL celým číslem:
SELECT
EmployeeName,
Salary,
COALESCE(Salary, 0) AS "Salary (adjusted)"
FROM Employees;
Výsledek:
EmployeeName Salary Salary (adjusted) -------------- ------ ----------------- Homer Einstein NULL 0 Bart Hawking 100000 100000
Neplatný počet argumentů
Pomocí COALESCE()
bez jakýchkoli argumentů vede k chybě:
SELECT COALESCE();
Výsledek:
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1