如何从PostgreSQL 9.4中的匿名行类型获取第一个字段?

Nob*_*obu 11 sql postgresql

=# select row(0, 1) ;
  row
-------
 (0,1)
(1 row)
Run Code Online (Sandbox Code Playgroud)

如何进入0同一个查询?我认为以下类型的工作,但有任何简单的方法吗?

=# select json_agg(row(0, 1))->0->'f1' ;
 ?column?
----------
 0
(1 row)
Run Code Online (Sandbox Code Playgroud)

没有运气类似阵列的语法[0].

谢谢!

Pat*_*ick 2

您的行类型是匿名的,因此您无法轻松访问其元素。您可以做的是创建一个TYPE,然后将匿名行转换为该类型并访问该类型中定义的元素:

CREATE TYPE my_row AS (
  x integer,
  y integer
);

SELECT (row(0,1)::my_row).x;
Run Code Online (Sandbox Code Playgroud)

就像 Craig Ringer 在您的问题中评论的那样,如果可以的话,您应该避免从一开始就生成匿名行,并输入在数据模型和查询中使用的任何数据。