Coalesce sql: описание, особенности использования, примеры

При составлении sql-запросов нередко возникает ситуация, когда при выборке данных надо сравнить значения нескольких столбцов и вывести то из них, которое содержит данные (не пустое). Эту задачу отлично решает выражение Coalesce. В данной статье вы найдете полную характеристику выражения Coalesce sql, описание особенностей использования, а также примеры.

coalesce sql описание

Вывод непустых значений с помощью Coalesce. Особенности

Рассмотрим Sql Coalesce особенности использования:

  1. Допускает указание любого количества аргументов (в отличие от Isnull/Nvl/Nvl2, число аргументов в которых ограничено).
  2. Может принимать в качестве аргумента подзапросы.
  3. Возвращает результат, равный первому отличному от Null значению, либо Null, если отличного от Null значения не будет найдено.
  4. Sql Coalesce может использоваться в предложении Select для выбора непустого значения, а также в Where для уточнения, что набор столбцов с пустыми значениями не допускается (/допускается).
  5. Данное выражение равнозначно применению выражения Case, проверяющему последовательно каждый аргумент на условие When argument1 is not null then argument1. По сути, Coalesce это «ярлык», созданный для удобства использования, и во многих СУБД оптимизаторы запросов переписывают выражение Coalesce на Case.
  6. Sql Coalesce функции имеются во всех ведущих реляционных системах управления базами данных.

sql coalesce

Синтаксис Coalesce

Каждый, кто хоть раз применял Coalesce при составлении sql-запросов, знает, что синтаксис данного выражения предельно прост. Достаточно в круглых скобках указать аргументы, проверяемые на Null, через запятую. Если допустим, что аргументы имеют имена arg1, arg2, … argN, то синтаксис Coalesce будет иметь следующий вид:

Coalesce(arg1, arg2, … argN).

sql coalesce функции

Подготовим несколько таблиц для изучения механизма работы данного выражения.

Подготовка таблиц

Чтобы лучше понять Coalesce sql описание, создадим в базе данных две таблицы, содержащие информацию по объектам недвижимости.

Первая таблица Area пусть содержит наименования объектов недвижимости и их площадь. Площадь может быть уточненной (area_yt) либо декларированной (area_decl).

id

object_name

area_yt

area_decl

1

Здание 1

116,2

114

2

Объект незавершенного строительства 1

568

3

Помещение 1

64,7

4

Помещение 2

34,2

5

Земельный участок 1

112

111,6

6

Сооружение 1

7

Помещение 3

27,9

8

Сооружение 2

37,2

36,4

9

Здание 2

Вторая таблица Basic_characteristic пусть содержит информацию по основной характеристике объекта недвижимости – протяженность (Extension), глубина (Depth), площадь (Area), объем (Scope), высота (Height).

id

object_name

Extension

Depth

Area

Scope

Height

1

Здание 1

892,4

30

2

Здание 2

48

3

Сооружение 1

164,7

4

Земельный участок 1

5

Помещение 1

23,6

6

Помещение 2

34,7

7

Помещение 3

19,8

Рассмотрели синтаксис Coalesce sql, описание, особенности использования и перейдем непосредственно к примерам.

Примеры использования

Синтаксис у выражения Coalesce предельно прост, однако важно не забывать, что результатом выполнения команды станет ПЕРВОЕ непустое найденное значение из списка аргументов. Это замечание имеет очень большое значение, поэтому аргументы в выражении необходимо расставлять в порядке их важности. Проще всего понять принцип по таблице площадей. Составьте запрос, выбирающий наименование объекта недвижимости, а также значение площади:

SELECT Area.id, Area.object_name, coalesce(Area.area_yt, Area.area_decl)

FROM Area

И получите результат:

id

object_name

Coalesce

1

Здание 1

116,2

2

Объект незавершенного строительства 1

568

3

Помещение 1

64,7

4

Помещение 2

34,2

5

Земельный участок 1

112

6

Сооружение 1

7

Помещение 3

27,9

8

Сооружение 2

37,2

9

Здание 2

По объектам «Здание 1», «Земельный участок 1» и «Сооружение 2» были заполнены оба значения площади, но в приоритете оказалась площадь уточненная, поскольку ее мы указали в списке аргументов первой. Выражение Coalesce нашло первое непустое значение и вывело его, прекратив дальнейший просмотр аргументов. Данное построение запроса – верное, ведь уточненная площадь более определенная, нежели декларированная. Если бы мы указали в качестве первого аргумента площадь декларированную, то при заполненности этого поля таблицы она оказалась бы в приоритете.

Помимо использования в Select, очень часто выражение Coalesce применяется с условием Where. Оно позволяет отсечь из результата те строки, в которых значения перечня полей пустые (или наоборот, включить в результат только те значения, где перечень полей не заполнен). Данная ситуация встречается повсеместно: например, на предприятии при оформлении нового сотрудника в базу данных внесли только базовые сведения о нем, а заполнение подробной информации оставили «на потом». Постепенно «пробелы» всплывают – или перед проверкой, или при направлении сотрудника в отпуск/командировку/больничный.

Выберем из таблицы с основными характеристиками объекты недвижимости, у которых не заполнено ни одно из значений характеристик:

SELECT id, object_name

FROM Basic_characteristic

Where coalesce(Extension, Depth, Area, Scope, Height) is null

По данному запросу в таблице найдется одно совпадение – объект «Земельный участок 1», у которого все поля с характеристиками пустые:

id

object_name

4

Земельный участок 1

sql coalesce особенности использования

Надеемся, что наше подробное Coalesce sql описание помогло вам понять все особенности использования данного выражения, а также разобраться с важными нюансами.

Статья закончилась. Вопросы остались?
Комментарии 0
Подписаться
Я хочу получать
Правила публикации
Редактирование комментария возможно в течении пяти минут после его создания, либо до момента появления ответа на данный комментарий.