简单的问题,但我的搜索功能失败,所以我甚至不知道这是否可能。
我在Postgres中有一个表,称之为key_value_store
,有一个hstore字段,称之为document
。我还定义了一个类型,称之为key_value_type
,它具有我想要从hstore中提取的字段作为属性到一个完整的表格行:
CREATE TYPE key_value_type AS (property1 text, property2 text, property3 text)
所以我想输出(最终使用VIEW)一个列,其列数与key_value_type
的属性一样多,我需要对许多属性组合执行此操作,因此我不想为每个组合创建一个表。
我尝试过:
SELECT populate_record(null::key_value_type, document) FROM key_value_store
但不是:
| PROPERTY 1 | PROPERTY 2 | PROPERTY 3 |
........................................
| value 1.1 | value 1.2 | value 1.3 |
........................................
| value 2.1 | value 2.2 | value 2.3 |
........................................
| and so on | and so on | and so on |
........................................
我得到的是:
| populate_record |
........................................
| (value 1.1, value 1.2, value 1.3) |
........................................
| (value .1, value 2.2, value 2.3) |
........................................
| (and so on, and so on, and so on) |
........................................
如何从此处(或其他任何地方)获得所需的结果?
我注意到使用表名而不是key_value_type
我实际上得到了我想要的东西,但正如我所说的,我会避免为我需要的每个属性组合创建一个表。
答案 0 :(得分:2)
populate_record()
完全相同:它填充记录。
因此,您只能获得一列,而不是三列。
如果您想要记录中的所有列,则需要明确说明:
SELECT (populate_record(null::key_value_type, document)).*
FROM key_value_store
SQLFiddle示例:http://sqlfiddle.com/#!15/b6794/1