逻辑操作符
相比于原始的openGauss,dolphin新增了两个逻辑操作符:
- 新增
&&操作符。 -
新增
||操作符。 -
&&
描述:当dolphin.b_compatibility_mode为TRUE时代表逻辑与运算,支持的类型包含boolean型、时间型、日期型、整型、浮点型、位串型、字符型。真值表如下:
| a | b | a && b的结果 |
| TRUE | TRUE | TRUE |
| TRUE | FALSE | FALSE |
| TRUE | NULL | NULL |
| FLASE | FALSE | FALSE |
| FALSE | NULL | FALSE |
| NULL | NULL | NULL |
对于不同输入类型的处理如下表:
| 数据类型 | 处理方式 |
| 布尔型 | 按照真值表进行逻辑与运算。 |
| 整型 | 仅将零转换为布尔假,其余值均转换为布尔真,再进行逻辑与运算。 |
| 浮点型 | 仅将零转换为布尔假,其余值均转换为布尔真,再进行逻辑与运算。 |
| 位串型 | 仅将全零转换为布尔假,其余值均转换为布尔真,再进行逻辑与运算。 |
| 时间型 | 时间类型的转换方式仅依赖于‘小时’部分,当为输入‘00:xx:xx’时,时间类型均转换成为布尔假;当输入为‘yy:xx:xx’,且yy不为零时,时间类型均转换为布尔真。再进行逻辑与运算。 |
| 日期型 | 日期类型的转换方式仅依赖于‘年’部分,当为输入‘0000-xx-xx’时,日期类型均转换成为布尔假;当输入为‘yyyy-xx-xx’,且yy不为零时,日期类型均转换为布尔真。再进行逻辑与运算。 |
| 字符型 | 字符型的转换根据字符型的首部是否为数值,若不为数值,则直接转换成为布尔假;若为数值,则等于0的数值转换为布尔假否则转换为布尔真,然后再进行逻辑与运算。 |
返回值类型:boolean
示例:
1. openGauss=# SELECT 1 && 1;
2. ?column?
3. ----------
4. t
5. (1 row)
- ||
描述:当sql_mode参数不为'pipes_as_concat'时代表逻辑或运算,支持的类型包含boolean型、时间型、日期型、整型、浮点型、位串型、字符型。真值表如下:
| a | b | a |
| TRUE | TRUE | TRUE |
| TRUE | FALSE | TRUE |
| TRUE | NULL | TRUE |
| FLASE | FALSE | FALSE |
| FALSE | NULL | NULL |
| NULL | NULL | NULL |
对于不同输入类型的处理如下表:
| 数据类型 | 处理方式 |
| 布尔型 | 按照真值表进行逻辑或运算。 |
| 整型 | 仅将零转换为布尔假,其余值均转换为布尔真,再进行逻辑或运算。 |
| 浮点型 | 仅将零转换为布尔假,其余值均转换为布尔真,再进行逻辑或运算。 |
| 位串型 | 仅将全零转换为布尔假,其余值均转换为布尔真,再进行逻辑或运算。 |
| 时间型 | 时间类型的转换方式仅依赖于‘小时’部分,当为输入‘00:xx:xx’时,时间类型均转换成为布尔假;当输入为‘yy:xx:xx’,且yy不为零时,时间类型均转换为布尔真。再进行逻辑或运算。 |
| 日期型 | 日期类型的转换方式仅依赖于‘年’部分,当为输入‘0000-xx-xx’时,日期类型均转换成为布尔假;当输入为‘yyyy-xx-xx’,且yy不为零时,日期类型均转换为布尔真。再进行逻辑或运算。 |
| 字符型 | 字符型的转换根据字符型的首部是否为数值,若不为数值,则直接转换成为布尔假;若为数值,则等于0的数值转换为布尔假否则转换为布尔真,然后再进行逻辑或运算。 |
返回值类型:boolean
示例:
1. openGauss=# SELECT 0 || 0;
2. ?column?
3. ----------
4. f
5. (1 row)
