Tom*_*lis 3 postgresql composite-types
在 PostgreSQL 中我可以创建匿名行或复合类型
postgres=# SELECT ROW(1,'Hello',false) as r;
r
-------------
(1,Hello,f)
(1 row)
Run Code Online (Sandbox Code Playgroud)
但我怎样才能把这些田地重新拿出来呢?没有以下工作
postgres=# SELECT (r).* from (SELECT ROW(1,'Hello',false) as r) as T;
ERROR: record type has not been registered
postgres=# SELECT (r).column0 from (SELECT ROW(1,'Hello',false) as r) as T;
ERROR: record type has not been registered
Run Code Online (Sandbox Code Playgroud)
Pet*_*ier 10
允许
ROW expressions
使用后缀符号提取其成员 (Tom Lane)例如,
(ROW(4, 5.0)).f1
现在返回 4。
select (ROW(1,'Hello',false)).f1
Run Code Online (Sandbox Code Playgroud)
请注意,有一些问题。您可能需要显式转换类型
select (ROW(1,'Hello',false)).f2
Run Code Online (Sandbox Code Playgroud)
错误:找不到从未知到文本的转换函数
select (ROW(1,'Hello'::text,false)).f2
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅db<>fiddle
源代码中的相关提交似乎是8b7a0f1d11 ,并在https://www.postgresql.org/message-id/flat/10872.1572202006%40sss.pgh.pa.us进行了讨论
目前我还不知道有任何官方文档,但我会大声喊出 Jack@TA向我展示了新技巧。
归档时间: |
|
查看次数: |
3177 次 |
最近记录: |