COALESCE в PostgreSQL

COALESCE в PostgreSQL — это встроенная функция, которая возвращает первое ненулевое значение/выражение в заданном списке значений/выражений.

Параметры

  • Функция принимает неограниченное количество аргументов.
  • Функция COALESCE ожидает, что аргументы будут иметь один и тот же тип данных. В противном случае выдает ошибку.

Возвращаемое значение

Эта функция возвращает первый ненулевой аргумент.

Синтаксис

COALESCE (arg_1, arg_2, arg_3, …);

Вычисление функции происходит слева направо. В приведенном выше синтаксисе проверка на нулевое значение будет выполняться для arg_1, затем для arg_2.

Пример кода 1

Давайте посмотрим на код ниже:

SELECT  COALESCE(NULL, 'educative', 'edpresso', NULL, 'hello') as coalesce_output;

Объяснение кода

В приведенном выше примере мы передаем в COALESCE() функцию разные аргументы. Некоторые из наблюдений:

  • Вывод educative. Это первый ненулевой аргумент.
  • Как только функция достигает второго аргумента, то есть , educative дальнейшие аргументы игнорируются.

Пример кода 2

Давайте посмотрим на другой пример:

CREATE TABLE Product (
    Name  varchar(100) NOT NULL,
    Price   int
);

INSERT INTO Product 
    (Name, Price) 
  VALUES ('mobile', 120),
    ('TV', 200),
    ('Remote', NULL),
    ('Laptop', 1000);

select *, COALESCE(Price, 0) * 0.05 as Discount from Product;

Объяснение кода

  • Строки с 1 по 3: мы определяем Product как таблицу с атрибутами Name и Price.
  • Строки с 6 по 11: Мы вставляем в Product таблицу несколько записей. Здесь мы вставляем запись, где Price находится NULL.
  • Строка 13: Рассчитываем скидку в Price столбце. Здесь COALESCE() функция используется с аргументами Price и 0. So 0 возвращается, когда какое-либо Price значение равно NULL.