# 10.5.联盟
,案子
, 和相关结构
SQL联盟
构造必须匹配可能不同的类型才能成为单个结果集。解析算法分别应用于联合查询的每个输出列。这相交
和除了
构造以相同的方式解析不同的类型联盟
.其他一些构造,包括案子
,大批
,价值观
, 和最伟大的
和至少
函数,使用相同的算法来匹配它们的组件表达式并选择结果数据类型。
类型解析协会
,案例
,以及相关结构
如果所有输入都是同一类型,而不是
未知的
,解析为该类型。如果任何输入属于域类型,则在后续所有步骤中将其视为域的基本类型。[12]
如果所有输入都是
未知的
,解析为类型文本
(字符串类别的首选类型)。否则未知的
出于其余规则的目的,将忽略输入。如果非未知输入不都属于同一类型类别,则失败。
选择第一个非未知输入类型作为候选类型,然后考虑彼此未知的输入类型,从左到右。[13]如果候选类型可以隐式转换为另一种类型,但反之亦然,请选择另一种类型作为新的候选类型。然后继续考虑剩余的输入。如果在此过程的任何阶段选择了首选类型,请停止考虑其他输入。
将所有输入转换为最终候选类型。如果没有从给定输入类型到候选类型的隐式转换,则失败。
下面是一些例子。
例10.10.联合中未指定类型的类型解析
SELECT text 'a' AS "text" UNION SELECT 'b';
text