В 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