类别:

条件表达式函数

BOOLAND

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

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

  • Zero values are regarded as false.

因此,该函数返回:

  • True,如果两个表达式均为非零。

  • False,如果两个表达式均为零,或者一个表达式为零,而另一个表达式为非零或 NULL。

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

另请参阅:

BOOLNOTBOOLORBOOLXOR

语法

BOOLAND( <expr1> , <expr2> )
Copy

实参

expr1

数值表达式。

expr2

数值表达式。

返回

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

使用说明

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

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

示例

以下示例使用 BOOLAND 函数。

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

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

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

计算浮点数的布尔 AND 结果

以下示例展示了该函数对舍入后为零的浮点数可能返回意外结果的情况。

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

SELECT BOOLAND(2, 0.3);
Copy
+-----------------+
| BOOLAND(2, 0.3) |
|-----------------|
| False           |
+-----------------+
SELECT BOOLAND(-0.4, 5);
Copy
+------------------+
| BOOLAND(-0.4, 5) |
|------------------|
| False            |
+------------------+

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

SELECT 2 AND 0.3;
Copy
+-----------+
| 2 AND 0.3 |
|-----------|
| True      |
+-----------+
语言: 中文