В 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