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