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