类别:

条件表达式函数

BOOLNOT

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

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

  • Zero values are regarded as false.

因此,该函数返回:

  • True 如果表达式为零。

  • False 如果表达式为非零。

  • NULL 如果表达式为 NULL。

另请参阅:

BOOLANDBOOLORBOOLXOR

语法

BOOLNOT( <expr> )
Copy

实参

expr

数值表达式。

返回

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

使用说明

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

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

示例

以下示例使用 BOOLNOT 函数。

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

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

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

计算浮点数的布尔 NOT 结果

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

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

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

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

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

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

SELECT NOT -0.4;
Copy
+----------+
| NOT -0.4 |
|----------|
| False    |
+----------+
语言: 中文