PostgreSQL 9.0.4 中文文档 | ||||
---|---|---|---|---|
Prev | Fast Backward | Chapter 10. 类型转换 | Fast Forward | Next |
SQLUNION结构必须匹配可能不同的类型成为一个单一的结果设置。
该解决算法分别应用到一个关联查询的每个输出列。
INTERSECT和EXCEPT结构在同一路径中像UNION一样决定不同的类型。
CASE, ARRAY, VALUES,GREATEST
和LEAST
结构使用相同的算法来匹配构成的表达式和查询一个结果数据类型。
UNION, CASE,和相关构造的类型分析
如果所有的输入为相同格式,并且是未知类型,那么解决该类型。 否则,用它们的底层基本类型取代在列表中的任何域类型。
如果所有的输入为unknown类型,决定作为text(字符分类的优先格式)类型。 否则,未知输入是被忽略的。
如果非未知输入不为所有的相同类型分类,那么将失败。
如果有的话,选择第一个在分类中首选的非未知输入类型。
否则,选择最后的非未知输入类型,它允许所有在非未知输入之前隐含地转换为它。 (总有这样的一种类型,因为最总在列表中的第一个类型必须满足该条件。)
转换所有的输入为选定的类型。如果没有一个从所给输入到选定类型的转换将会失败。
下面是一些例子。
Example 10-7. 在一个关联中使用规定中的类型的类型解析
SELECT text 'a' AS "text" UNION SELECT 'b'; text ------ a b (2 rows)
这里,未知类型文字'b'将被作为text类型来处理。