Что делает оператор «+» в контексте MySQL в контексте логического выражения? - PullRequest
0 голосов
/ 06 мая 2020

Например:

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

Я перехожу на MySQL из PostgreSQL. Я наткнулся на этот синтаксис (в операторе select), и мне трудно понять, что именно здесь делают операторы '+'.

Спасибо

1 Ответ

1 голос
/ 06 мая 2020

В этом случае логические выражения будут обрабатываться как целые числа, где 0 представляет ложь, а 1 - истину. Затем ваш select:

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

будет true , если только одно из трех полей A, B, C не равно нулю, а два других равны нулю. Если все три значения равны нулю, все не равны нулю или два не равны нулю, то условие будет ложным.

...