首页 > 解决方案 > 在 MySQL 中,'+' 运算符在布尔表达式的上下文中做什么?

问题描述

例如:

    IF (SELECT ((new.fieldA IS NULL) + (new.fieldB IS NULL) + (new.fieldC IS NULL)) <> 2)
    THEN
        do some stuff
    END IF;

我从 PostgreSQL 来到 MySQL。我遇到了这种语法(在 select 语句中),并且很难弄清楚“+”运算符到底在做什么。

谢谢

标签: mysqloperatorsboolean-expression

解决方案


在这种情况下,布尔表达式将被视为整数,0 代表假,1 代表真。然后,您的选择:

SELECT ((new.fieldA IS NULL) + (new.fieldB IS NULL) + (new.fieldC IS NULL)) <> 2

如果三个 A、B、C 字段中只有一个不为空,其他两个为空,则为真。如果三个都为空,所有都不为空,或者两个不为空,则条件为假。


推荐阅读