PostgreSQL | Как получить первый элемент из ячейки типа record?

PostgreSQL | Как получить первый элемент из ячейки типа record?

При помощи функции «row()» мы можем создавать записи — данные с типом record.

-- Создаём данные с типом record
select row(77, 99);

-- Обращение к первому элементу
select (row(77, 99)).f1; --77

-- Обращение ко второму элементу
select (row(77, 99)).f2; --99

 

Для нескольких записей с типом record ситуация будет точно такая же.

-- Создание записей с типом record
-- Приведение всех столбцов к одному столбцу
select row(T.*) from (
select 44,77 union select 55,99
) as T

-- Обращение к анонимным столбцам по их номерам

-- Получим значения первого столбца
select (row(T.*)).f1 from (
select 44,77 union select 55,99
) as T

-- Получим значения второго столбца
select (row(T.*)).f2 from (
select 44,77 union select 55,99
) as T

Важно учитывать то, что вызов функции «row()» приводит к неочевидному созданию столбцов с именами вида «f1», «f2», «f3» и так далее.