PostgreSQL 10.1 手册_部分 II. SQL 语言_第 10 章 类型转换_10.5. UNION、CASE和相关结构

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介: 10.5. UNION、CASE和相关结构 SQL UNION结构必须使可能不相似的类型匹配成为一个单一的结果集。该决定算法被独立地应用到一个联合查询的每个输出列。 INTERSECT和EXCEPT采用和UNION相同的方法来决定不相似的类型。

10.5. UNIONCASE和相关结构

SQL UNION结构必须使可能不相似的类型匹配成为一个单一的结果集。该决定算法被独立地应用到一个联合查询的每个输出列。 INTERSECTEXCEPT采用和UNION相同的方法来决定不相似的类型。CASEARRAYVALUESGREATESTLEAST结构使用相同的算法来使它们的组成表达式匹配并选择一种结果数据类型。

UNIONCASE和相关结构的类型决定

  1. 如果所有的输入为相同类型,并且不是unknown,那么就决定是该类型。

  2. 如果任何输入是一种域类型,在所有后续步骤中都把它当做 该域的基类型。 [9]

  3. 如果所有的输入为unknown类型,则决定为text(字符串分类的首选类型)类型。 否则,为了其余规则,unknown输入被忽略。

  4. 如果非未知输入不全是相同的类型分类,则失败。

  5. 如果有的话,选择第一个在其分类中作为首选类型的非未知输入类型。

  6. 否则,选择最后的非未知输入类型,它允许所有在前面的非未知输入被隐式地转换为它(总有这样的一种类型,因为至少在列表中的第一个类型必须满足这个条件)。

  7. 转换所有的输入为选定的类型。如果没有一个从给定输入到选定类型的转换将会失败。

下面是一些例子。

例 10.9. 联合中未指定类型的类型决定

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

 text
------
 a
 b
(2 rows)

这里,未知类型文字'b'将被决定为类型text


例 10.10. 简单联合中的类型决定

SELECT 1.2 AS "numeric" UNION SELECT 1;

 numeric
---------
       1
     1.2
(2 rows)

文字1.2numeric类型,且integer1可以被隐式地造型为numeric,因此使用numeric类型。


例 10.11. 可换位联合中的类型决定

SELECT 1 AS "real" UNION SELECT CAST('2.2' AS REAL);

 real
------
    1
  2.2
(2 rows)

这里,由于类型real被能被隐式地造型为integer,而integer可以被隐式地造型为real,联合结果类型被决定为real




[9] 多少有些类似于对待用于操作符和函数的域输入的方式,这种行为允许 一种域类型能通过一个UNION或相似的结构保留下来, 只要用户小心地确保所有的输入都是(显式地或隐式地)准确类型。否 则会优先选择该域的基类型。

本文转自PostgreSQL中文社区,原文链接:10.5. UNIONCASE和相关结构

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
2月前
|
SQL 存储 BI
【软件设计师备考 专题 】数据库语言(SQL)
【软件设计师备考 专题 】数据库语言(SQL)
91 0
|
23天前
|
SQL 数据库 数据库管理
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(一)模式、表、索引与视图
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(一)模式、表、索引与视图
55 11
|
23天前
|
SQL 算法 数据库
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
97 6
|
4天前
|
SQL 关系型数据库 数据库
SQL 42501: Postgresql查询中的权限不足错误
SQL 42501: Postgresql查询中的权限不足错误
|
5天前
|
SQL 关系型数据库 MySQL
【MySQL】:探秘主流关系型数据库管理系统及SQL语言
【MySQL】:探秘主流关系型数据库管理系统及SQL语言
11 0
|
10天前
|
SQL Java 数据库连接
Java从入门到精通:2.3.2数据库编程——了解SQL语言,编写基本查询语句
Java从入门到精通:2.3.2数据库编程——了解SQL语言,编写基本查询语句
|
18天前
|
SQL 安全 关系型数据库
关系型数据库控制语言(DCL)
DCL是SQL的一部分,用于控制数据库安全和访问权限。主要包括GRANT(授权)、REVOKE(撤销)和角色管理。GRANT用于给予用户访问数据库对象的权限,REVOKE用于撤销权限。角色管理则允许批量授予一组权限。DCL帮助管理员精细控制数据访问,确保安全性和完整性。不同RDBMS对DCL的实现可能略有差异,使用时需参考相应文档。
15 6
|
19天前
|
SQL 数据库
数据库SQL语言实战(一)
数据库SQL语言实战(一)
|
19天前
|
SQL 数据库
数据库SQL语言实战(二)
数据库SQL语言实战(二)
|
23天前
|
SQL Oracle 数据可视化
【Oracle】玩转Oracle数据库(四):SQL语言
【Oracle】玩转Oracle数据库(四):SQL语言
35 8

热门文章

最新文章