

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 流式 SQL 运算符
<a name="sql-reference-streaming-operators"></a>
<a name="TOC1"></a>
**子查询运算符**  
在查询和子查询中使用运算符来组合或测试各种属性或关系的数据。

以下主题将介绍可用的运算符，分为以下几类：
+ [标量运算符](#scalaroprs)
  + [运算符类型](#OPRTYPES)
  + [优先级](#PRECEDENCE)
+ [算术运算符](#ARITHMOPRS)
+ [字符串运算符](sql-reference-string-operators.md)
  +  （联接）
  + LIKE 模式
  + SIMILAR TO 模式
+ [日期、时间戳和间隔运算符](sql-reference-date-timestamp-interval.md)
+ [逻辑运算符](sql-reference-logical-operators.md)
  + 三态布尔逻辑
  + 示例

## IN 运算符
<a name="INOPERATOR"></a>

作为条件测试中的运算符，IN 测试标量或行值在值列表、关系表达式或子查询中的成员资格。

```
Examples:
1. --- IF column IN ('A','B','C')
2. --- IF (col1, col2) IN (
    select a, b from my_table
    )
```

如果在列表、关系表达式的计算结果或子查询返回的行中找到要测试的值，则返回 TRUE；否则返回 FALSE。

**注意**  
IN 具有不同的含义且用在 [CREATE FUNCTION](sql-reference-create-function.md) 中。

## EXISTS 运算符
<a name="EXISTSOPERATOR"></a>

测试关系表达式是否返回任何行；如果返回任何行，则返回 TRUE，否则返回 FALSE。

## 标量运算符
<a name="scalaroprs"></a>
<a name="OPRTYPES"></a>
**运算符类型**  
标量运算符的两大类是：
+ 一元：一元运算符只能对一个运算对象进行运算。一元运算符通常以下列格式对其运算对象进行运算：

  ```
  operator operand
  ```
+ 二进制：二进制运算符对两个运算对象进行运算。二进制运算符以下列格式对其运算对象进行运算：

  ```
  operand1 operator operand2
  ```

下面的运算对象描述中特别注明了一些使用不同格式的运算符。

如果指定给运算符的运算对象是 null，则结果几乎总是 null（有关异常，请参阅关于逻辑运算符的主题）。
<a name="PRECEDENCE"></a>
**优先级**  
流式 SQL 遵循通常的运算符优先级：

1. 计算带括号的子表达式。

1. 计算一元运算符（例如，\+ 或 -，逻辑 NOT）。

1. 计算乘法和除法（\* 和 /）。

1. 计算加法和减法（\+ 和 -）以及逻辑组合（AND 和 OR）。

如果运算对象之一为 NULL，则结果也为 NULL。如果运算对象的类型不同但可比较，则结果的类型将是精度最高的。如果运算对象的类型相同，则结果将与运算对象的类型相同。例如，5/2 = 2，而不是 2.5，因为 5 和 2 都是整数。

## 算术运算符
<a name="ARITHMOPRS"></a>


| 运算符 | 一元/二进制 | 说明 | 
| --- | --- | --- | 
| \+ | U | 身份 | 
| - | U | 求反 | 
| \+ | B | 加 | 
| - | B | 减 | 
| \* | B | 乘 | 
| / | B | 除 | 



这些运算符中的每一个都根据正常的算术行为运作，但需要注意以下几点：

1. 如果运算对象之一为 NULL，则结果也为 NULL。

1. 如果运算对象的类型不同但可比较，则结果的类型将是精度最高的。

1. 如果运算对象的类型相同，则结果将与运算对象的类型相同。例如，5/2 = 2，而不是 2.5，因为 5 和 2 都是整数。

### 示例
<a name="operators_examples"></a>


| 操作 | 结果 | 
| --- | --- | 
| 1 \+ 1 | 2 | 
| 2.0 \+ 2.0 | 4.0 | 
| 3.0 \+ 2 | 5.0 | 
| 5/2 | 2 | 
| 5.0/ 2 | 2.50000000000000 | 
| 5\*2\+2 | 12 | 