10.6. SELECT 输出列

前面几节中给出的规则将导致为SQL查询中的所有表达式分配非unknown数据类型, 除非未指定类型文字显示为SELECT命令的简单输出列。例如,在

SELECT 'Hello World';

没有什么可以确定字符串文字应被视为什么类型。在这种情况下, PostgreSQL会退回到将文本类型解析为text

SELECTUNION(或INTERSECTEXCEPT) 结构的一个分支时,或者当它出现在INSERT ... SELECT中时,此规则不适用, 因为优先使用前面部分中给出的规则。未指定类型的文字的类型可以从第一种情况下的其他 UNION分支或第二种情况下的目标列中获取。

为此,RETURNING列表与SELECT输出列表的处理方式相同。

注意

PostgreSQL 10之前,此规则不存在, 并且SELECT输出列表中的未指定类型文字保留为unknown类型。 这带来了不好的后果,所以改变了它。