---
url: /v6.2/calculation-function-operator.md
---
# 操作符

衡石允许使用运算符创建表达式，用于比较值或者执行算术计算。有三种不同类型的计算运算符：算术、比较和逻辑。

## 算术操作符

| 算数操作符 | 含义               | 示例       |
|------------|--------------------|------------|
| +（加号）  | 加法               | 3 + 3 = 6        |
| +?（非空加号）  | 两边参数如果为空，当成0参与加法               | 3 +? null = 3    |
| -（减号）  | 减法或负号         | 3 - 1 - 1  = 1    |
| -?（非空减号）  | 两边参数如果为空，当成0参与减法               | 3 -? null -? 1 = 2    |
| \*（星号）  | 乘法               | 3 \* 3 = 9        |
| /（正斜杠）| 除法               | 3 / 3 = 1      |
| %（百分号）|  取余数              | 16 % 5 = 1      |
| ^（脱字号）| 求幂               | 16 ^ 4 = 65536      |

## 比较操作符

| 比较操作符 | 含义       | 示例                          |
|------------|------------|-------------------------------|
| =          | 等于       | {Region} = 'cn'              |
| !=          | 不等于       | {Region} != 'cn'              |
| >          | 大于       | {销售日期} > '2009-01-01'   |
| <          | 小于       | {销售日期} < '2009-01-01'     |
| >=         | 大于或等于 | {金额} >= 20000               |
| <=         | 小于或等于 | {金额} <= 100                 |
| <>         | 不等于     | {区域} <> 'cn'               |
| in         | 在集合中     | {区域} in \['cn','us'] 或 in({区域}, \['cn','us'])    |
| notin         | 不在集合中     | {区域} not in \['cn','us'] 或 notin({区域}, \['cn','us']) |

## 逻辑操作符

| 逻辑操作符   | 含义   | 示例    |
|--------------|-----------|----------------------------------|
| and | 在两个表达式之间创建一个 AND 条件，每个表达式都有一个布尔结果。 如果两个表达式都返回 TRUE，则表达式的组合也返回 TRUE；否则，组合返回 FALSE。 | ({Region} = 'cn') and ({status} = 1)     |
| or | 在两个逻辑表达式之间创建条件 OR 。 如果任一表达式返回 TRUE，则结果为 TRUE；只有当两个表达式均为 FALSE时，结果才是 FALSE。 | (\[Region] = "France") or {status} = 1    |
| not | 对逻辑表达值取反   | not ({status} = 1)     |

## 操作符优先级

如果在单个公式中合并了多个运算符，则根据下表对作进行排序。 如果运算符的优先级值相等，则它们从左到右排序。使用括号可以调整计算顺序，括号内的计算优先级最高。
例如，如果表达式同时包含乘法和除法运算符，则按表达式中从左到右的顺序计算它们。下表中的操作符优先级是从高到低的顺序排列。

| 操作符号              | 说明                                                                 |
|----------------------|----------------------------------------------------------------------|
| ^                    | 求幂                                                                 |
| –                    | 符号（如 –1）                                                       |
| \* , /, %               | 乘法， 除法， 取余数                                                           |
| +，+?，– ，-?              | 加法，非空加法，减法，非空减法                                                          |
| =, !=, <, >, <=, >=, <> | 比较                                                                 |
| in, notin | 集合中是否存在                                                                 |
| not                  | 取非                                                   |
| and                  | 逻辑与                                                        |
| or                   | 逻辑或                                                         |

示例: and 和 or 的组合表达式

```
5 > 6 or 5 < 3 and 5 = 5
```

计算步骤：

* 5 > 6，返回 false
* 5 < 3，返回 false; 5 = 5，返回 true; 逻辑与，返回 false
* 逻辑或，返回 false
