在 MySQL 中,“+”运算符在布尔表达式的上下文中有什么作用?

In MySQL, what does the '+' operator do in the context of a boolean expression?

例如:

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

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

谢谢

在这种情况下,布尔表达式将被视为整数,0 表示假,1 表示真。那么,你的 select:

SELECT ((new.fieldA IS NULL) + (new.fieldB IS NULL) + (new.fieldC IS NULL)) <> 2
如果 A、B、C 三个字段中只有一个不为空,而其他两个为空,则

将为 true。如果三个都为空,全部不为空,或者两个不为空,则条件为假。