PostgreSQL是否支持创建内联结构体,还是需先定义自定义类型?
PostgreSQL 内联行结构体创建方法
在PostgreSQL里,不用预先定义自定义类型,就能直接创建内联的行结构体,有几种实用写法:
- ROW构造器写法:这是最常规的方式,直接构造行数据
SELECT ROW('tom', 'jones') AS person;
如果需要明确指定字段名和类型,可以强制转换:
SELECT ROW('tom', 'jones')::(first varchar, last varchar) AS person;
或者用子查询方式更清晰地定义字段:
SELECT (SELECT ROW('tom', 'jones') AS (first, last)) AS person;
- JSON转成行类型写法:如果你习惯键值对的写法,可以借助JSON转换:
SELECT json_to_record('{"first": "tom", "last": "jones"}') AS x(first varchar, last varchar) AS person;
你提到的{first: 'tom', 'jones'}这种语法PostgreSQL不直接支持,但上面的方法都能实现类似的内联结构体效果。
另外要注意:这种内联创建的行类型只在当前查询中有效,如果需要跨查询复用,还是建议用CREATE TYPE来定义持久化的自定义类型。
内容的提问来源于stack exchange,提问作者David542
相关产品推荐
相关产品推荐

