postgresql - 有没有更简洁的方法将查询结果转换为类型?

标签 postgresql types casting

我经常将查询结果转换为用户定义的类型。考虑这个简单的例子:

test=# create type test_type as  (a int, b int);
CREATE TYPE
test=# create table test_table (a int, b int);
CREATE TABLE
test=# insert into test_table values (1,2);
INSERT 0 1
test=# select r::test_type from (select * from test_table t) as r;
   r   
-------
 (1,2)
(1 row)

对于我的很多查询来说,子查询是必要的,而且效果很好。但是,有时它是从表到类型的简单一对一映射,如上例所示。

有没有更简单的表达方式?

当我尝试对我来说显而易见的事情时,我得到了错误:

test=# select t::test_type from test_table t;
ERROR:  cannot cast type test_table to test_type
LINE 1: select t::test_type from test_table t;
                ^

最佳答案

为此,您可以使用带有通配符列扩展的 ROW 构造。

regress=> select ROW(t.*)::testtype from testtable t;
  row  
-------
 (1,2)
(1 row)

关于postgresql - 有没有更简洁的方法将查询结果转换为类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24918235/

相关文章:

netbeans - PHP/Symfony/Netbeans 中类变量的类型转换

TypeScript - 在严格模式下安全、方便地使用字符串访问对象/映射值

c++ - 如何将字节数组转换为整型(int、long、short等) 'endian safely'?

postgresql - 使用 Postgres 进行 Azure 搜索

mysql - 使用 SQL,设计行为类似于其他表接口(interface)的表的最佳实践是什么?

node.js - 如何使用 Sequelize 更新我的购物车数据库中的商品数量(如果它已经存在)或如果不存在则创建它?

python - Pandas 0.8 read_csv 无法识别 'dtype' 参数

oop - 如何使用类型类来实现持久性、内省(introspection)、身份、打印、

java - 如何从匿名 PL/pgSQL block 返回结果?

java - 为什么不能在 Java 中将 Integer 转换为 String?