SAP HANA Union & Union All: Operator 示例
⚡ 智能摘要
SAP HANA Operator 用于在 SQL 中执行计算、值比较或赋值操作。共有六大类运算符:一元和二元运算符、算术运算符、字符串运算符、比较运算符、逻辑运算符以及集合运算符(例如 UNION 和 INTERSECT)。

SAP HANA Operator 可用于计算、值比较或分配值。
SAP HANA Opera职权范围
- 一元和二元 Opera器
- 算术 Opera器
- 串 Opera职权范围
- 对比 Opera器
- 合乎逻辑 Opera器
- 米 Opera器
每个运算符都会返回一个值,因此它们可以相互嵌套。它们的求值顺序由优先级决定,具体说明请参见各个运算符族的介绍。
一元和二元 Opera器
| Opera器 | 操作 | 描述 |
|---|---|---|
| 一元 | 一元运算符适用于一个操作数 | 一元加号运算符(+) 一元否定运算符(-) 逻辑否定(NOT) |
| 二进制 | 二进制 Operator 适用于两个操作数 | 乘法运算符(*,/) 加法运算符(+,-) 比较运算符(=,!=,<,>,<=,>=) 逻辑运算符(AND,OR) |
算术 Opera器
- 加法 (+)
- 小组traction (-)
- 乘法 ( * )
- 分配 ( / )
串 Opera器
一个字符串 Operator 是一个连接运算符,它将两个项目(例如字符串,表达式或常量)组合为一个。
使用两个竖线“||”作为连接运算符。
对比 Opera器
比较运算符用于比较两个操作数。以下是比较运算符的列表 Opera托尔
- 等于(=)
- 大于 ( > )
- Less 比 ( < )
- 大于或等于(>=)
- Less 小于或等于(<=)
- 不等于(!=,<>)
合乎逻辑 Opera器
搜索条件中使用逻辑运算符。
例如 WHERE 条件1 AND / OR / NOT 条件2
以下是逻辑运算符的列表 -
- AND – (例如 WHERE 条件 1 AND 条件 2)
如果条件 1 和条件 2 都为真,则组合条件为真,否则为假。 - 或者 – (例如 WHERE 条件 1 或 条件 2)
如果条件 1 或条件 2 为真,则组合条件为真,如果两个条件都为假,则组合条件为假。 - 不 – (例如 WHERE NOT 条件)
如果条件为假,则非条件为真。
米 Opera职权范围
- UNION – 将两个或多个 SELECT 语句或查询合并在一起,不包含重复项。
- UNION ALL – 合并两个或多个 select 语句或查询,包括所有重复行。
- INTERSECT – 将两个或多个 SELECT 语句或查询合并,并返回所有共同的行。
- EXCEPT – 获取第一个查询的输出,并删除第二个查询选择的行。
例如 我有两个表(表 1、表 2),其中一些值是共同的。
我们对这两个表使用集合运算符(Union、Union ALL、Intersect、Except) SQL 如下 -
创建表 1- SQL 脚本
CREATE COLUMN TABLE DHK_SCHEMA.TABLE1 ( ELEMENT CHAR(1), PRIMARY KEY (ELEMENT) ); INSERT INTO DHK_SCHEMA.TABLE1 VALUES ('P'); INSERT INTO DHK_SCHEMA.TABLE1 VALUES ('Q'); INSERT INTO DHK_SCHEMA.TABLE1 VALUES ('R'); INSERT INTO DHK_SCHEMA.TABLE1 VALUES ('S'); INSERT INTO DHK_SCHEMA.TABLE1 VALUES ('T');
创建表 2- SQL 脚本
CREATE COLUMN TABLE DHK_SCHEMA.TABLE2 ( ELEMENT CHAR(1), PRIMARY KEY (ELEMENT) ); INSERT INTO DHK_SCHEMA.TABLE2 VALUES ('S'); INSERT INTO DHK_SCHEMA.TABLE2 VALUES ('T'); INSERT INTO DHK_SCHEMA.TABLE2 VALUES ('U'); INSERT INTO DHK_SCHEMA.TABLE2 VALUES ('V'); INSERT INTO DHK_SCHEMA.TABLE2 VALUES ('W');
注意::此处“DHK_SCHEMA”是架构名称,用户可以在 SQL 因此。
米 Opera示例如下
| Opera器 | SQL查询 | 输出 | 使用 |
|---|---|---|---|
| UNION | 选择 * 从 ( 选择 ELEMENT 从 DHK_SCHEMA.TABLE1 UNION 选择 ELEMENT 从 DHK_SCHEMA.TABLE2 ) ORDER BY 元素; |
合并两个或多个查询的结果且不重复。 | |
| UNION ALL | 选择 * 从 ( 选择 ELEMENT 从 DHK_SCHEMA.TABLE1 UNION ALL 选择 ELEMENT 从 DHK_SCHEMA.TABLE2 ) ORDER BY 元素; |
将两个或多个查询的结果全部重复并合并。 | |
| 相交 | 选择 * 从 ( 选择 ELEMENT 从 DHK_SCHEMA.TABLE1 相交 选择 ELEMENT 从 DHK_SCHEMA.TABLE2 ) ORDER BY 元素; |
将两个或多个具有所有共同行的查询的结果合并起来。 | |
| 除 | 选择 * 从 ( 选择 ELEMENT 从 DHK_SCHEMA.TABLE1 除 选择 ELEMENT 从 DHK_SCHEMA.TABLE2 ) ORDER BY 元素; |
获取第一个查询的输出并删除第二个查询选择的行 |
米 Opera规则和要求
集合运算符看似简单,但却很容易拒绝查询,因为它们比较的是整个结果集,而不是单个值。它们遵循四条规则。
- 列数必须匹配。 两条 SELECT 语句必须返回相同数量的列。如果列数不匹配,则立即失败,并且错误消息会指出位置而不是列名。
- 数据类型必须兼容。 第一个查询的第一列与第二个查询的第一列进行匹配,以此类推,匹配依据是位置而非名称。兼容的数值类型会自动转换;字符列与日期类型的匹配则不会转换。
- 列名来自第一个查询。 无论第二个语句如何命名其列,输出结果都会忽略它们,这会让第一次阅读 UNION 结果的人感到惊讶。
- ORDER BY 语句应用于整个结果集。 它应该放在最后,在最后一个 SELECT 语句之后,这也是为什么上面的示例将 union 语句包装在外部 SELECT 语句中的原因。
UNION 和 UNION ALL 之间的性能差异值得注意。UNION 必须对合并结果进行排序或哈希处理以去除重复项,而 UNION ALL 则只需追加即可。在不允许或可以接受重复项的情况下,UNION ALL 在大型表上的速度明显更快。这些表中使用的列定义将在后续章节中介绍。 SAP HANA 数据类型.
Opera优先权 SAP HANA SQL
当多个运算符出现在同一个表达式中时,优先级决定了哪个运算符先被计算。如果优先级设置错误,查询虽然能够正常运行,但会返回错误的行,这比语法错误危险得多。
| 下单 | 运营商 | 类别 |
|---|---|---|
| 1 | () | 括号内的内容总是最先被评估。 |
| 2 | + –(单个操作数) | 一元加号和否定 |
| 3 | * / | 乘法与除法 |
| 4 | + – || | 加法,子trac连接,串联 |
| 5 | = != < > <= >= | 对比 |
| 6 | 不是 | 逻辑否定 |
| 7 | AND | 逻辑连词 |
| 8 | OR | 逻辑析取 |
经典的陷阱位于第 7 行和第 8 行。因为 AND 比 OR 的结合力更强,所以条件语句更容易出错。 WHERE region = 'EAST' OR region = 'WEST' AND status = 'OPEN' 读作 东,或者西,都是开放的。无论状态如何,都会返回所有东部行。在两个区域测试周围添加括号可以解决这个问题。
💡提示: 即使优先级顺序已经能够给出预期结果,也要在每个混合使用 AND 和 OR 条件的地方加上括号。这样查询语句就能自解释,并且便于其他开发人员后续修改。
日常语句语法已在以下部分中介绍: SAP HANA SQL 教程以及更广泛的平台 SAP HANA教程 系列丛书中。





