On this page
10.6. SELECT 输出列
上一节中给出的规则将导致将非unknown
数据类型分配给 SQL 查询中的所有表达式,但未指定类型的 Literals 会显示为SELECT
命令的简单输出列。例如,在
SELECT 'Hello World';
没有什么可以确定字符串 Literals 应采用的类型。在这种情况下,PostgreSQL 将退回解析为text
的 Literals 类型。
当SELECT
是UNION
(或INTERSECT
或EXCEPT
)构造的一个臂时,或当它出现在INSERT ... SELECT
内时,由于前面几节中的规则优先,因此不应用此规则。未指定类型 Literals 的类型可以在第一种情况下从另一个UNION
臂获取,或者在第二种情况下从目标列获取。
为此,将RETURNING
列表与SELECT
输出列表相同。
Note
在 PostgreSQL 10 之前,此规则不存在,并且SELECT
输出列表中未指定类型的 Literals 保留为unknown
类型。那已经带来了各种各样的不良后果,所以已经改变了。