SQL UNION 构造必须把那些可能不太相似的类型匹配起来成为一个结果集。解析算法分别应用于联合查询的每个输出字段。INTERSECT 和 EXCEPT 构造对不相同的类型使用和 UNION 相同的算法进行解析。CASE, ARRAY, VALUES, GREATEST
, LEAST
构造也使用同样的算法匹配它的部件表达式并且选择一个结果数据类型。
UNION, CASE 和相关构造的类型解析
如果所有输入都是 unknown 类型则解析成 text 类型(字符串类型范畴的首选类型)。否则,在选择结果类型的时候忽略 unknown 输入。
如果非 unknown 输入不属于同一个类型范畴,失败。
选取第一个属于该范畴中首选类型的非 unknown 输入类型,或者,第一个允许所有非 unknown 输入隐含转换成它的类型。
把所有输入转换成所选类型。
下面是一些例子。
例10-7. Union 中的待定类型解析
SELECT text 'a' AS "text" UNION SELECT 'b'; text ------ a b (2 rows)
这里,unknown 类型文本 'b' 将被解析成 text 类型。