- 类别:
BOOLNOT¶
计算单个数值表达式的布尔 NOT 值。根据布尔语义:
Non-zero values, including negative numbers, are regarded as true.
Zero values are regarded as false.
因此,该函数返回:
True如果表达式为零。False如果表达式为非零。NULL如果表达式为 NULL。
语法¶
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 |
+----------+