【发布时间】:2013-08-09 06:42:29
【问题描述】:
给定:{{1,"a"},{2,"b"},{3,"c"}}
期望:
foo | bar
-----+------
1 | a
2 | b
3 | c
您可以通过以下查询获得预期结果;但是,最好有一些随数组大小缩放的东西。
SELECT arr[subscript][1] as foo, arr[subscript][2] as bar
FROM ( select generate_subscripts(arr,1) as subscript, arr
from (select '{{1,"a"},{2,"b"},{3,"c"}}'::text[][] as arr) input
) sub;
【问题讨论】:
-
没有办法动态改变SQL查询返回的列数。
-
我想要回滚的唯一一件事是在标题中添加“标签:”,这是您已恢复的编辑。请不要在标题中添加标签。从您的编辑评论看来,您正在寻找此搜索:stackoverflow.com/search?q=infavorites%3A183181+[postgres]。您也可以使用 infavorites:mine 作为快捷方式。
-
@Flexo:你太棒了。是的,这是我不知道的东西,可能几年前就可以使用了。也许我应该更经常地在 Meta 上闲逛。你赢了:)
-
如果将每个
{替换为[并将}替换为],它就会变成JSON,可以通过pl/pgsql json 解析器进行解析。这对您来说是一个可行的解决方案吗? -
@funkwurm 不幸的是不是,除非它是仍在维护的最新香草 Postgres (8.4) 的一部分。我也可以创建一个临时表,或者使用
VALUES (..),(...),但这都不够。
标签: sql arrays postgresql unnest