SELECT
输出列 #前面章节中给出的规则将导致将非 unknown
数据类型分配给 SQL 查询中的所有表达式,但出现在 SELECT
命令的简单输出列中的未指定类型的字面量除外。例如,在
SELECT 'Hello World';
中,没有任何东西可以标识字符串文字应该被视为哪种类型。在这种情况下,PostgreSQL 将回退将字面量的类型解析为 text
。
当 SELECT
是 UNION
(或 INTERSECT
或 EXCEPT
) 构造的一个分支,或者当它出现在 INSERT ... SELECT
中时,此规则不适用,因为前面章节中给出的规则具有优先权。未指定类型的字面量的类型可以从第一种情况下的其他 UNION
分支获取,或者从第二种情况下的目标列获取。
RETURNING
列表的此目的与 SELECT
输出列表的处理方式相同。
在 PostgreSQL 10 之前,此规则不存在,并且 SELECT
输出列表中的未指定类型字面量保留为 unknown
类型。这导致了各种不良后果,因此已进行了更改。
如果您发现文档中有任何不正确、与您使用特定功能的经验不符或需要进一步澄清的地方,请使用此表单报告文档问题。