
# 操作符概述
操作符用于连接操作数或参数并返回结果。从语法上讲，运算符可以出现在操作数之前、操作数之后或两个操作数之间，因此，操作符可以分为一元运算符和二元运算符。
- 一元运算符
  ```
  运算符 操作数
  ```
  
- 二元运算符
  ```
  操作数1 运算符 操作数2
  ```
  
M-Compatibility模式下当前支持操作符及各操作符的说明如[表1]所示。
 表1操作符描述 
| 操作类型 | 操作符名称        | 操作数类型       | 描述                  |
|:---|:---|:---|:---|
| 逻辑操作 | NOT (!)      | 一元          | 逻辑非。                |
| 逻辑操作 | AND（\&\&）    | 二元          | 逻辑与。                |
| 逻辑操作 | OR（\|\|）     | 二元          | 逻辑或。                |
| 逻辑操作 | XOR          | 二元          | 逻辑异或。               |
| 位操作  | \&           | 二元          | 按位与。                |
| 位操作  | \|           | 二元          | 按位或。                |
| 位操作  | \^           | 二元          | 按位异或。               |
| 位操作  | \<\<         | 二元          | 左移。                 |
| 位操作  | \>\>         | 二元          | 右移。                 |
| 位操作  | \~           | 一元          | 按位非。                |
| 模式匹配 | \[NOT\] LIKE | 二元          | 简单模式匹配。             |
| 比较操作 | \<           | 二元          | 小于。                 |
| 比较操作 | \>           | 二元          | 大于。                 |
| 比较操作 | \<=          | 二元          | 小于或等于。              |
| 比较操作 | \>=          | 二元          | 大于或等于。              |
| 比较操作 | =            | 二元          | 等于。                 |
| 比较操作 | \<\>或!=      | 二元          | 不等于。                |
| 比较操作 | \<=\>        | 二元          | NULL安全等于。           |
| 比较操作 | IS           | 二元          | 判断是否与布尔值等价。         |
| 比较操作 | IS NOT       | 二元          | 判断是否与布尔值不等价（IS的否定）。 |
| 比较操作 | IS NOT NULL  | 一元（操作数 运算符） | 判断是否非NULL。          |
| 比较操作 | IS NULL      | 一元（操作数 运算符） | 判断是否为NULL。          |
| 算术操作 | +            | 一元/二元       | 一元表示正数，二元表示加法。      |
| 算术操作 | -            | 一元/二元       | 一元表示负数，二元表示减法。      |
| 算术操作 | \*           | 二元          | 乘法操作符。              |
| 算术操作 | /            | 二元          | 除法操作符。              |
| 算术操作 | %或MOD        | 二元          | 整数除法，返回余数。          |
| 算术操作 | DIV          | 二元          | 整数除法，返回商值。          |
   
#### 操作符支持的数据类型
表2数据类型 
| 类型分类                                                                                                                           | 类型                                                                                                                                                                                            |
|:---|:---|
| [布尔类型](https://support.huaweicloud.com/distributed-m-comp-devg-v8-gaussdb/gaussdb-81-0160.html#ZH-CN_TOPIC_0000002558805335)   | BOOLEAN/BOOL                                                                                                                                                                                  |
| [二进制类型](https://support.huaweicloud.com/distributed-m-comp-devg-v8-gaussdb/gaussdb-81-0161.html#ZH-CN_TOPIC_0000002527805518)  | BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB                                                                                                                                            |
| [字符类型](https://support.huaweicloud.com/distributed-m-comp-devg-v8-gaussdb/gaussdb-81-0162.html#ZH-CN_TOPIC_0000002558925251)   | CHAR、VARCHAR、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT                                                                                                                                                |
| [日期时间类型](https://support.huaweicloud.com/distributed-m-comp-devg-v8-gaussdb/gaussdb-81-0163.html#ZH-CN_TOPIC_0000002527965468) | DATE、TIME、TIMESTAMP、DATETIME、YEAR                                                                                                                                                             |
| [位串类型](https://support.huaweicloud.com/distributed-m-comp-devg-v8-gaussdb/gaussdb-81-0164.html#ZH-CN_TOPIC_0000002558805337)   | BIT                                                                                                                                                                                           |
| [数值类型](https://support.huaweicloud.com/distributed-m-comp-devg-v8-gaussdb/gaussdb-81-0165.html#ZH-CN_TOPIC_0000002527805520)   | TINYINT、SMALLINT、MEDIUMINT、INT/INTEGER、BIGINT、NUMERIC/DECIMAL、DEC、FIXED、FLOAT、FLOAT4、FLOAT8、DOUBLE、TINYINT UNSIGNED、SMALLINT UNSIGNED、MEDIUMINT UNSIGNED、INT/INTEGER UNSIGNED、BIGINT UNSIGNED |
   
数据类型具体请参见[数据类型](https://support.huaweicloud.com/distributed-m-comp-devg-v8-gaussdb/gaussdb-81-0158.html#ZH-CN_TOPIC_0000002558925249)。
#### 操作符优先级
运算符从优先级从上到下越来越高，同一行上的运算符具有相同的优先级，如[表3]所示。
 表3操作符优先级列表 
| 结合性      | 符号               |
|:---|:---|
| left     | OR               |
| left     | XOR              |
| left     | AND              |
| right    | NOT              |
| right    | =                |
| nonassoc | \<、\>、\>=、\<=    |
| nonassoc | LIKE             |
| nonassoc | BETWEEN          |
| nonassoc | IN               |
| left     | \|               |
| left     | \&               |
| left     | \<\<、\>\>        |
| left     | +、-              |
| left     | \* 、/ 、%、DIV、MOD |
| left     | \^               |
| left     | \~               |
| right    | !                |
   
