
# 操作符概述
操作符用于连接操作数或参数并返回结果。从语法上讲，运算符可以出现在操作数之前、操作数之后或两个操作数之间，因此，操作符可以分为一元运算符和二元运算符。
- 一元运算符
  ```
  运算符 操作数
  ```
  
- 二元运算符
  ```
  操作数1 运算符 操作数2
  ```
  
M-Compatibility模式下当前支持操作符及各操作符的简短说明如[表1]所示。
 表1操作符描述 
| 操作类型 | 操作符名称               | 操作数类型       | 描述                         |
|:---|:---|:---|:---|
| 逻辑操作 | NOT (!)             | 一元          | 逻辑非。                       |
| 逻辑操作 | AND（\&\&）           | 二元          | 逻辑与。                       |
| 逻辑操作 | OR（\|\|）            | 二元          | 逻辑或。                       |
| 逻辑操作 | XOR                 | 二元          | 逻辑异或。                      |
| 位操作  | \&                  | 二元          | 按位与。                       |
| 位操作  | \|                  | 二元          | 按位或。                       |
| 位操作  | \^                  | 二元          | 按位异或。                      |
| 位操作  | \<\<                | 二元          | 左移。                        |
| 位操作  | \>\>                | 二元          | 右移。                        |
| 位操作  | \~                  | 一元          | 按位非。                       |
| 模式匹配 | \[NOT\] LIKE        | 二元          | 简单模式匹配。                    |
| 比较操作 | \<                  | 二元          | 小于。                        |
| 比较操作 | \>                  | 二元          | 大于。                        |
| 比较操作 | \<=                 | 二元          | 小于或等于。                     |
| 比较操作 | \>=                 | 二元          | 大于或等于。                     |
| 比较操作 | =                   | 二元          | 等于。                        |
| 比较操作 | \<\>或!=             | 二元          | 不等于。                       |
| 比较操作 | \<=\>               | 二元          | NULL安全等于。                  |
| 比较操作 | \[NOT\] BETWEEN AND | 三元          | 判断操作数1是否大于等于操作数2且小于等于操作数3。 |
| 比较操作 | IS                  | 二元          | 判断是否与布尔值等价。                |
| 比较操作 | IS NOT              | 二元          | 判断是否与布尔值不等价（IS的否定）。        |
| 比较操作 | IS NOT NULL         | 一元（操作数 运算符） | 判断是否非NULL。                 |
| 比较操作 | IS NULL             | 一元（操作数 运算符） | 判断是否为NULL。                 |
| 算术操作 | +                   | 一元/二元       | 一元表示正数，二元表示加法。             |
| 算术操作 | -                   | 一元/二元       | 一元表示负数，二元表示减法。             |
| 算术操作 | \*                  | 二元          | 乘法操作符。                     |
| 算术操作 | /                   | 二元          | 除法操作符。                     |
| 算术操作 | %或MOD               | 二元          | 整数除法，返回余数。                 |
| 算术操作 | DIV                 | 二元          | 整数除法，返回商值。                 |
| 类型转换 | BINARY              | 一元          | 转换为BINARY类型。               |
   
#### 操作符支持的数据类型
表2数据类型 
| 类型分类                                                                                                                           | 类型                                                                                                                                                                                            |
|:---|:---|
| [布尔类型](https://support.huaweicloud.com/centralized-m-comp-devg-v8-gaussdb/gaussdb-81-0159.html#ZH-CN_TOPIC_0000002559099377)   | BOOLEAN/BOOL                                                                                                                                                                                  |
| [二进制类型](https://support.huaweicloud.com/centralized-m-comp-devg-v8-gaussdb/gaussdb-81-0160.html#ZH-CN_TOPIC_0000002558939477)  | BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB                                                                                                                                            |
| [字符类型](https://support.huaweicloud.com/centralized-m-comp-devg-v8-gaussdb/gaussdb-81-0161.html#ZH-CN_TOPIC_0000002527819662)   | CHAR、VARCHAR、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT                                                                                                                                                |
| [日期时间类型](https://support.huaweicloud.com/centralized-m-comp-devg-v8-gaussdb/gaussdb-81-0162.html#ZH-CN_TOPIC_0000002527979610) | DATE、TIME、TIMESTAMP、DATETIME、YEAR                                                                                                                                                             |
| [位串类型](https://support.huaweicloud.com/centralized-m-comp-devg-v8-gaussdb/gaussdb-81-0163.html#ZH-CN_TOPIC_0000002559099379)   | BIT                                                                                                                                                                                           |
| [数值类型](https://support.huaweicloud.com/centralized-m-comp-devg-v8-gaussdb/gaussdb-81-0164.html#ZH-CN_TOPIC_0000002558939479)   | 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/centralized-m-comp-devg-v8-gaussdb/gaussdb-81-0157.html#ZH-CN_TOPIC_0000002527819660)。
#### 操作符优先级
运算符从优先级从上到下越来越高，同一行上的运算符具有相同的优先级，具体见[表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    | !                |
   
