Spec-Zone.ru › MariaDB

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 |
+------------------------+

См. также

  • Значения NULL
  • Оператор IS NULL
  • Оператор IS NOT NULL
  • Функция IFNULL
  • Функция NULLIF
  • Типы данных CONNECT
Содержимое, воспроизведенное на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проверяется предварительно компанией MariaDB. Мнения, информация и мнения, выраженные в этом контенте, не обязательно отражают точку зрения MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/coalesce/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API