В MariaDB, COALESCE()
Операторът връща първата стойност, различна от NULL в списъка, или NULL, ако няма стойности, различни от NULL.
Синтаксис
Синтаксисът е така:
COALESCE(value,...)
Пример
Ето един прост пример за демонстрация:
SELECT COALESCE(null, 'Red', 'Black');
Резултат:
Red
В този случай Red
беше първата стойност, различна от NULL, и така COALESCE()
върна тази стойност.
Black
също не беше NULL, но дойде след Red
и затова не беше върнато.
Пример за база данни
Да предположим, че изпълняваме следната заявка:
SELECT
PetName,
DOB AS "Date of Birth"
FROM Pets;
И получаваме следния резултат:
+---------+---------------+ | 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 | +---------+---------------+
Можем да видим, че последните два реда имат стойности NULL в колоната DOB.
Ако искаме да заменим NULL
с друга стойност бихме могли да променим заявката, както следва:
SELECT
PetName,
COALESCE(DOB, 'None Supplied') AS "Date of Birth"
FROM Pets;
Резултат:
+---------+---------------+ | 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 | +---------+---------------+
Изрази
COALESCE()
връща текущата стойност на първия израз, който първоначално не се оценява на NULL
. Следователно, ако предадем израз като този:
SELECT COALESCE( null, 5 * 2 );
Получаваме това:
10
Когато всички стойности са NULL
Ако всички стойности са NULL
, COALESCE()
връща NULL
:
SELECT COALESCE( null, null );
Резултат:
NULL
COALESCE()
срещу IFNULL()
Когато се използва с две стойности, COALESCE()
работи по същия начин като IFNULL
:
SET @a = null, @b = 52;
SELECT
COALESCE(@a, @b),
IFNULL(@a, @b);
Резултат:
+------------------+----------------+ | COALESCE(@a, @b) | IFNULL(@a, @b) | +------------------+----------------+ | 52 | 52 | +------------------+----------------+
Невалиден брой аргументи
Използване на COALESCE()
без никакви аргументи води до грешка:
SELECT COALESCE();
Резултат:
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