我找下面的解释,如果我运行像这样的东西,我得到一个unknown
类型,“未知”和类型推断的规则是什么?
SELECT pg_typeof(a)
FROM (SELECT null) AS t(a);
pg_typeof
-----------
unknown
(1 row)
然而,随着更多的复杂性就变得text
神奇,
SELECT pg_typeof(a)
FROM (
SELECT null
UNION SELECT null
) AS t(a);
pg_typeof
-----------
text
(1 row)
明确铸造没有改变,这也返回text
,
SELECT pg_typeof(a)
FROM (
SELECT null::unknown
UNION SELECT null::unknown
) AS t(a);
它是如下usingly这个工作,
SELECT pg_typeof(a)
FROM (
SELECT null
UNION SELECT 42
) AS t(a);
但是,这不,
SELECT pg_typeof(a)
FROM (
SELECT null
UNION SELECT null
UNION SELECT 42
) AS t(a);
什么用途的unknown
类型有过一次,如果它认为是在上述情况下的文字?
我投票决定关闭自己的问题,因为我认为这是对[dba.se]更好的匹配 –
我投迁移过,但我不知道它是值得的:这些案件[完美描述在文档](https://www.postgresql.org/docs/current/static/typeconv-union-case.html)(第3点) - 除了最后一个。这只是一个[优先问题](http://rextester.com/TNG47898)。 – pozs