SELECT
输出列前面几节中给出的规则将导致为SQL查询中的所有表达式分配非unknown
数据类型,
除非未指定类型文字显示为SELECT
命令的简单输出列。例如,在
SELECT 'Hello World';
没有什么可以确定字符串文字应被视为什么类型。在这种情况下,
PostgreSQL会退回到将文本类型解析为text
。
当SELECT
是UNION
(或INTERSECT
或EXCEPT
)
结构的一个分支时,或者当它出现在INSERT ... SELECT
中时,此规则不适用,
因为优先使用前面部分中给出的规则。未指定类型的文字的类型可以从第一种情况下的其他
UNION
分支或第二种情况下的目标列中获取。
为此,RETURNING
列表与SELECT
输出列表的处理方式相同。
在PostgreSQL 10之前,此规则不存在,
并且SELECT
输出列表中的未指定类型文字保留为unknown
类型。
这带来了不好的后果,所以改变了它。