

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

# 流式 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. 计算一元运算符（例如，\$1 或 -，逻辑 NOT）。

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

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

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

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


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



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

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

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

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

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


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