类别:

条件表达式函数

BOOLNOT

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

  • 非零值(包括负数)被视为 True。

  • 零值被视为 False。

因此,该函数返回:

  • True 如果表达式为零。

  • False 如果表达式为非零。

  • NULL 如果表达式为 NULL。

另请参阅:

BOOLANDBOOLORBOOLXOR

语法

BOOLNOT( <expr> )

实参

expr

数值表达式。

返回

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

使用说明

此函数对 浮点数 进行四舍五入。因此,对于舍入后为零的浮点数,它可能会返回意外结果。

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

示例

以下示例使用 BOOLNOT 函数。

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

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

SELECT BOOLNOT(0),
       BOOLNOT(10),
       BOOLNOT(NULL);
+------------+-------------+---------------+
| BOOLNOT(0) | BOOLNOT(10) | BOOLNOT(NULL) |
|------------+-------------+---------------|
| True       | False       | NULL          |
+------------+-------------+---------------+

计算浮点数的布尔 NOT 结果

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

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

SELECT BOOLNOT(0.3);
+--------------+
| BOOLNOT(0.3) |
|--------------|
| True         |
+--------------+
SELECT BOOLNOT(-0.4);
+---------------+
| BOOLNOT(-0.4) |
|---------------|
| True          |
+---------------+

如有需要,您可以使用 CEIL 函数来规避对正浮点数值的舍入行为。例如,以下查询会返回 False

SELECT BOOLNOT(CEIL(0.3));
+--------------------+
| BOOLNOT(CEIL(0.3)) |
|--------------------|
| False              |
+--------------------+

对于负浮点数值,您可以使用 NOT 逻辑运算符 替代该函数,以规避这种舍入行为。例如,以下查询会返回 False

SELECT NOT -0.4;
+----------+
| NOT -0.4 |
|----------|
| False    |
+----------+