COALESCE
Синтаксис
COALESCE(value,...)
Описание
Возвращает первое ненулевое значение в списке или NULL, если таких значений нет. Должен быть передан хотя бы один параметр.
Функция полезна при подстановке значения по умолчанию для нулевых значений при отображении данных.
См. также Значения NULL в MariaDB.
Примеры
SELECT COALESCE(NULL,1); +------------------+ | COALESCE(NULL,1) | +------------------+ | 1 | +------------------+
SELECT COALESCE(NULL,NULL,NULL); +--------------------------+ | COALESCE(NULL,NULL,NULL) | +--------------------------+ | NULL | +--------------------------+
При указании двух аргументов, COALESCE() эквивалентно IFNULL():
SET @a=NULL, @b=1; SELECT COALESCE(@a, @b), IFNULL(@a, @b); +------------------+----------------+ | COALESCE(@a, @b) | IFNULL(@a, @b) | +------------------+----------------+ | 1 | 1 | +------------------+----------------+
Путаница с типом HEX:
CREATE TABLE t1 (a INT, b VARCHAR(10)); INSERT INTO t1 VALUES (0x31, 0x61),(COALESCE(0x31), COALESCE(0x61)); SELECT * FROM t1; +------+------+ | a | b | +------+------+ | 49 | a | | 1 | a | +------+------+
Причина различных результатов выше заключается в том, что при непосредственном вставке 0x31 в столбец, он обрабатывается как число (см. Шестнадцатеричные литералы), тогда как при передаче 0x31 в COALESCE() он обрабатывается как строка, поскольку:
- Значения HEX по умолчанию имеют строковый тип данных.
- COALESCE() имеет тот же тип данных, что и аргумент.
Подстановка нуля вместо NULL (в данном случае, когда агрегатная функция возвращает NULL после поиска строк):
SELECT SUM(score) FROM student; +------------+ | SUM(score) | +------------+ | NULL | +------------+ SELECT COALESCE(SUM(score),0) FROM student; +------------------------+ | COALESCE(SUM(score),0) | +------------------------+ | 0 | +------------------------+
См. также
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/coalesce/