我正在使用Postgres 9.1,我有一个使用record
函数返回row()
数据类型的函数。
举个简单的例子,试试:
select row(1,2,3);
它将返回一个单元格行,其中包含“(1,2,3)”。
在我更复杂的函数中,它返回一个地理编码和其他数据,如:
(90,"Sydney, Australia",0.431951065304161,151.208784,-33.873982)
所以我要做的是弄清楚如何在这个“行”或“数组”中确定每个节点值(无论技术上是否正确)。
任何可以提供帮助的人都会受到赞赏。
答案 0 :(得分:1)
示例功能:
create or replace function a_function()
returns record language sql as $$
select 90, 'Sydney, Australia'::text, 0.431951065304161, 151.208784, -33.873982;
$$;
select a_function();
a_function
------------------------------------------------------------------
(90,"Sydney, Australia",0.431951065304161,151.208784,-33.873982)
(1 row)
您应该使用列定义列表调用from子句中的函数:
select *
from a_function() as (id int, city text, num1 numeric, num2 numeric, num3 numeric);
id | city | num1 | num2 | num3
----+-------------------+-------------------+------------+------------
90 | Sydney, Australia | 0.431951065304161 | 151.208784 | -33.873982
(1 row)
答案 1 :(得分:0)
我一直在搜索,我找到了这个文档的答案:
http://www.tutorialspoint.com/postgresql/postgresql_data_types.htm
查看“访问复合类型”。
基本上record
数组是一个关联数组(或key =>值对)。
您必须使用密钥名称才能将其从阵列中拉出来。