2015-11-01 34 views
0

我使用的是Postgres 9.1,我有一个函数使用row()函数返回record数据类型。如何在Postgres记录数据类型中提取节点

举个简单的例子,尝试:

select row(1,2,3); 

它会返回一个单细胞一行 “(1,2,3)” 在里面。

在我更复杂的函数,它返回一个地理编码和其他数据,如:

(90,"Sydney, Australia",0.431951065304161,151.208784,-33.873982)

所以我试图做的是弄清楚如何精确每个节点值的这个“行“或”数组“(无论技术上是否正确)。

任何人都可以帮助,这将不胜感激。

回答

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) 

你应该从第一个字段定义列表调用函数中:

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) 
相关问题