# 10.5.联盟,案子, 和相关结构

SQL联盟构造必须匹配可能不同的类型才能成为单个结果集。解析算法分别应用于联合查询的每个输出列。这相交除了构造以相同的方式解析不同的类型联盟.其他一些构造,包括案子,大批,价值观, 和最伟大的至少函数,使用相同的算法来匹配它们的组件表达式并选择结果数据类型。

类型解析协会,案例,以及相关结构

  1. 如果所有输入都是同一类型,而不是未知的,解析为该类型。

  2. 如果任何输入属于域类型,则在后续所有步骤中将其视为域的基本类型。[12]

  3. 如果所有输入都是未知的,解析为类型文本(字符串类别的首选类型)。否则未知的出于其余规则的目的,将忽略输入。

  4. 如果非未知输入不都属于同一类型类别,则失败。

  5. 选择第一个非未知输入类型作为候选类型,然后考虑彼此未知的输入类型,从左到右。[13]如果候选类型可以隐式转换为另一种类型,但反之亦然,请选择另一种类型作为新的候选类型。然后继续考虑剩余的输入。如果在此过程的任何阶段选择了首选类型,请停止考虑其他输入。

  6. 将所有输入转换为最终候选类型。如果没有从给定输入类型到候选类型的隐式转换,则失败。

下面是一些例子。

例10.10.联合中未指定类型的类型解析

SELECT text 'a' AS "text" UNION SELECT 'b';

 text