Функция Postgresql возвращает составные - как мне получить составные значения в виде отдельных столбцов? - PullRequest
4 голосов
/ 26 сентября 2010

У меня есть функция Postgresql, которая возвращает составной тип, определенный как (location TEXT, id INT).Когда я запускаю «SELECT myfunc ()», мой вывод представляет собой один столбец с типом текста, отформатированный как:

("locationdata", myid)

Это довольно ужасно.Есть ли способ выбрать мою композицию так, чтобы я получил 2 столбца назад - столбец TEXT и столбец INT?

Ответы [ 2 ]

6 голосов
/ 27 сентября 2010

Использование:

SELECT * 
  FROM myfunc()

Вы можете Подробнее о функциональности в этой статье .

2 голосов
/ 27 сентября 2010

Ответ уже принят, но я подумал, что добавлю это:

Это может помочь подумать о типе данных и о том, где эти типы вписываются в общий запрос.SQL-запросы могут возвращать по существу три типа:

  • Одно скалярное значение
  • Список значений
  • Таблица значений

(Конечно, список - это просто таблица из одного столбца, а скаляр - просто список из одного значения.)

Когда вы смотрите на типы, вы видите, что запрос SQL SELECT имеет следующий шаблон:

SELECT scalar(s)
FROM table
WHERE boolean-scalar

Если ваша функция или подзапрос возвращает таблицу, она входит в предложение FROM.Если он возвращает список, он может войти в предложение FROM или его можно использовать с оператором IN как часть предложения WHERE.Если он возвращает скаляр, он может войти в предложение SELECT, предложение FROM или в логический предикат в предложении WHERE.

Это неполное представление запросов SELECT, но я обнаружил, что это помогаетвыяснить, куда должны идти мои подзапросы.

...