В MySQL, COALESCE()
Операторът връща първата стойност, различна от NULL в списъка, или NULL, ако няма стойности, различни от NULL.
Синтаксис
Синтаксисът е така:
COALESCE(value,...)
Пример
Ето един прост пример за демонстрация:
SELECT COALESCE(null, 'Fish', 'Rabbit');
Резултат:
Fish
В този случай Fish
беше първата стойност, различна от NULL, и така COALESCE()
върна тази стойност.
Rabbit
също беше стойност, различна от NULL, но дойде след Fish
и затова не беше върнато.
Когато всички стойности са NULL
Ако всички стойности са NULL
, COALESCE()
връща NULL
:
SELECT COALESCE( null, null );
Резултат:
NULL
Изрази
COALESCE()
връща текущата стойност на първия израз, който първоначално не се оценява на NULL
. Следователно, ако предадем израз като този:
SELECT COALESCE( null, 2 * 10 );
Получаваме това:
20
Пример за база данни
Да предположим, че изпълняваме следната заявка:
SELECT
PetName,
PetType
FROM Pets;
И получаваме следния резултат:
PetName PetType ------- ------- Meow Cat Woof Dog Tweet Bird Awk NULL Moo Cow Omph NULL
Можем да видим, че два реда имат стойности NULL в колоната DOB.
Ако искаме да заменим NULL
с друга стойност бихме могли да променим заявката, както следва:
SELECT
PetName,
COALESCE(PetType, 'Unknown') AS "PetType"
FROM Pets;
Резултат:
PetName PetType ------- ------- Meow Cat Woof Dog Tweet Bird Awk Unknown Moo Cow Omph Unknown
В този случай заменихме всички NULL стойности с низа Unknown
.
Не е необходимо обаче да е низ. Ето още един пример, който заменя NULL стойности с цяло число:
SELECT
EmployeeName,
Salary,
COALESCE(Salary, 0) AS "Salary (adjusted)"
FROM Employees;
Резултат:
EmployeeName Salary Salary (adjusted) -------------- ------ ----------------- Homer Einstein NULL 0 Bart Hawking 100000 100000
Невалиден брой аргументи
Използване на COALESCE()
без никакви аргументи води до грешка:
SELECT COALESCE();
Резултат:
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