运算符
openGauss中运算符是一个保留关键字或字符,一般用在WHERE语句中,作为过滤条件。常见运算符如下。
算术运算符
1. 描述:加
3. 示例:
5. ```
6. openGauss=# SELECT 2+3 AS RESULT;
7. result
8. --------
9. 5
10. (1 row)
11. ```
1. 描述:减
3. 示例:
5. ```
6. openGauss=# SELECT 2-3 AS RESULT;
7. result
8. --------
9. -1
10. (1 row)
11. ```
- *
描述:乘
示例:
1. openGauss=# SELECT 2*3 AS RESULT;
2. result
3. --------
4. 6
5. (1 row)
- /
描述:除(除法操作符不会取整)
示例:
1. openGauss=# SELECT 4/2 AS RESULT;
2. result
3. --------
4. 2
5. (1 row)
1. openGauss=# SELECT 4/3 AS RESULT;
2. result
3. ------------------
4. 1.33333333333333
5. (1 row)
- +/-
描述:正/负
示例:
1. openGauss=# SELECT -2 AS RESULT;
2. result
3. --------
4. -2
5. (1 row)
- %
描述:模(求余)
示例:
1. openGauss=# SELECT 5%4 AS RESULT;
2. result
3. --------
4. 1
5. (1 row)
- @
描述:绝对值
示例:
1. openGauss=# SELECT @ -5.0 AS RESULT;
2. result
3. --------
4. 5.0
5. (1 row)
- ^
描述:幂(指数运算)
示例:
1. openGauss=# SELECT 2.0^3.0 AS RESULT;
2. result
3. --------------------
4. 8.0000000000000000
5. (1 row)
- |/
描述:平方根
示例:
1. openGauss=# SELECT |/ 25.0 AS RESULT;
2. result
3. --------
4. 5
5. (1 row)
- ||/
描述:立方根
示例:
1. openGauss=# SELECT ||/ 27.0 AS RESULT;
2. result
3. --------
4. 3
5. (1 row)
- !
描述:阶乘
示例:
1. openGauss=# SELECT 5! AS RESULT;
2. result
3. --------
4. 120
5. (1 row)
- !!
描述:阶乘(前缀操作符)
示例:
1. openGauss=# SELECT !!5 AS RESULT;
2. result
3. --------
4. 120
5. (1 row)
- &
描述:二进制AND
示例:
1. openGauss=# SELECT 91&15 AS RESULT;
2. result
3. --------
4. 11
5. (1 row)
- |
描述:二进制OR
示例:
1. openGauss=# SELECT 32|3 AS RESULT;
2. result
3. --------
4. 35
5. (1 row)
- #
描述:二进制XOR
示例:
1. openGauss=# SELECT 17#5 AS RESULT;
2. result
3. --------
4. 20
5. (1 row)
- ~
描述:二进制NOT
示例:
1. openGauss=# SELECT ~1 AS RESULT;
2. result
3. --------
4. -2
5. (1 row)
- «
描述:二进制左移
示例:
1. openGauss=# SELECT 1<<4 AS RESULT;
2. result
3. --------
4. 16
5. (1 row)
- >>
描述:二进制右移
示例:
1. openGauss=# SELECT 8>>2 AS RESULT;
2. result
3. --------
4. 2
5. (1 row)
比较操作符
大部分数据类型都可用比较操作符进行比较,并返回一个布尔类型的值。
比较操作符均为双目操作符,被比较的两个数据类型必须是相同的数据类型或者是可以进行隐式转换的类型。
openGauss提供的比较操作符请参见表1。
表 1 比较操作符
| 操作符 | 描述 |
|---|---|
| < | 小于 |
| > | 大于 |
| <= | 小于或等于 |
| >= | 大于或等于 |
| = | 等于 |
| <> 或 !=或^= | 不等于 |
比较操作符可以用于所有相关的数据类型。所有比较操作符都是双目操作符,返回布尔类型数值。不等号的计算优先级高于等号。当输入的数据不同且无法隐式转换时, 比较操作将会失败。例如像1<2<3这样的表达式是非法的,因为布尔值和3之间无法用小于号(<)比较。
示例:
1. openGauss=# select 1<2;
2. ?column?
3. ----------
4. t
5. (1 row)
7. openGauss=# select 1>2;
8. ?column?
9. ----------
10. f
11. (1 row)
13. openGauss=# select 1>=2;
14. ?column?
15. ----------
16. f
17. (1 row)
19. openGauss=# select 1<=2;
20. ?column?
21. ----------
22. t
23. (1 row)
25. openGauss=# select 1=2;
26. ?column?
27. ----------
28. f
29. (1 row)
31. openGauss=# select 1!=2;
32. ?column?
33. ----------
34. t
35. (1 row)
逻辑操作符
常用的逻辑操作符有AND、OR和NOT,他们的运算结果有三个值,分别为TRUE、FALSE和NULL,其中NULL代表未知。他们运算优先级顺序为:NOT>AND>OR。
操作符AND和OR具有交换性,即交换左右两个操作数,不影响其结果。
运算规则请参见表2,表中的a和b代表逻辑表达式。
表 2 运算规则表
| a | b | a AND b的结果 | aOR b的结果 | NOT a的结果 |
|---|---|---|---|---|
| TRUE | TRUE | TRUE | TRUE | FALSE |
| TRUE | FALSE | FALSE | TRUE | FALSE |
| TRUE | NULL | NULL | TRUE | FALSE |
| FALSE | FALSE | FALSE | FALSE | TRUE |
| FALSE | NULL | FALSE | NULL | TRUE |
| NULL | NULL | NULL | NULL | NULL |
示例请参见示例。
