类别:

条件表达式函数

BOOLOR

计算两个数值表达式的布尔值 OR。根据布尔语义:

  • Non-zero values, including negative numbers, are regarded as true.

  • Zero values are regarded as false.

因此,该函数返回:

  • True,如果两个表达式均为非零,或者一个表达式为非零,而另一个表达式为零,否则返回 NULL。

  • False,如果两个表达式都为零。

  • NULL,如果两个表达式都是 NULL 或者一个表达式是 NULL ,另一个表达式为零。

另请参阅:

BOOLANDBOOLNOTBOOLXOR

语法

BOOLOR( <expr1> , <expr2> )
Copy

实参

expr1

数值表达式。

expr2

数值表达式。

返回

此函数返回 BOOLEAN 类型的值或 NULL。

使用说明

此函数对 浮点数 进行四舍五入。因此,当它将非零浮点数舍入为零时,可能会返回意外结果。

有关此行为和替代方案的示例,请参阅 计算浮点数的布尔 OR 结果

示例

以下示例使用 BOOLOR 函数。

计算整数和 NULL 值的布尔 OR 结果

以下查询计算整数和 NULL 值的布尔 OR 结果:

SELECT BOOLOR(1, 2),
       BOOLOR(0, 2),
       BOOLOR(3, NULL),
       BOOLOR(0, 0),
       BOOLOR(NULL, 0),
       BOOLOR(NULL, NULL);
Copy
+--------------+--------------+-----------------+--------------+-----------------+--------------------+
| BOOLOR(1, 2) | BOOLOR(0, 2) | BOOLOR(3, NULL) | BOOLOR(0, 0) | BOOLOR(NULL, 0) | BOOLOR(NULL, NULL) |
|--------------+--------------+-----------------+--------------+-----------------+--------------------|
| True         | True         | True            | False        | NULL            | NULL               |
+--------------+--------------+-----------------+--------------+-----------------+--------------------+

计算浮点数的布尔 OR 结果

以下示例演示了该函数如何为舍入为零的浮点数返回意外结果。

对于以下查询,预期以下函数调用的结果应为 True,但由于该函数会将非零浮点数值舍入为零,因此实际返回 False

SELECT BOOLOR(0.4, 0.3);
Copy
+------------------+
| BOOLOR(0.4, 0.3) |
|------------------|
| False            |
+------------------+
SELECT BOOLOR(-0.4, 0.3);
Copy
+-------------------+
| BOOLOR(-0.4, 0.3) |
|-------------------|
| False             |
+-------------------+

对于以下查询,预期以下函数调用的结果应为 True,但实际返回 NULL

SELECT BOOLOR(0.4, NULL);
Copy
+-------------------+
| BOOLOR(0.4, NULL) |
|-------------------|
| NULL              |
+-------------------+
SELECT BOOLOR(-0.4, NULL);
Copy
+--------------------+
| BOOLOR(-0.4, NULL) |
|--------------------|
| NULL               |
+--------------------+

如有需要,您可以使用 OR 逻辑运算符 替代该函数,以规避对浮点数的舍入行为。例如,以下查询会返回 True

SELECT 0.4 OR 0.3;
Copy
+------------+
| 0.4 OR 0.3 |
|------------|
| True       |
+------------+
语言: 中文