2025年9月25日: PostgreSQL 18 发布!
支持的版本: 当前 (18) / 17 / 16 / 15 / 14 / 13
开发版本: devel
不支持的版本: 12 / 11 / 10

10.6. SELECT 输出列 #

前面各节给出的规则将导致 SQL 查询中的所有表达式都被赋予非 unknown 的数据类型,但 SELECT 命令的简单输出列中出现的未指定类型的字面量除外。例如,在

SELECT 'Hello World';

没有办法确定该字符串字面量的类型应该是怎样的。在这种情况下,PostgreSQL 将回退并将该字面量的类型解析为 text

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

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

注意

PostgreSQL 10 之前,此规则不存在,并且 SELECT 输出列表中的未指定类型字面量将保留为 unknown 类型。这带来了一系列不好的后果,因此已被更改。

提交更正

如果您在文档中看到任何不正确之处、与您实际使用的特定功能不符之处,或者需要进一步澄清之处,请使用 此表单 来报告文档问题。