sql - CASE возвращает "true", если вы сравниваете NULL с NULL? - PullRequest
0 голосов
/ 07 января 2020

DECODE вернет "true", если вы сравните NULL с NULL. CASE не будет.

Как мне сделать CASE, чтобы вернуть true, если я сравню NULL с NULL?

Пример моего текущего запроса. Одна из проблем заключается в том, что если a.name равно null, а b.name равно null, оно вернет false. Я хочу, чтобы он работал как DECODE функция из oracle sql.

SELECT CASE a.name
    WHEN b.name THEN 1
    ELSE 0
END,
FROM Employee1 a, Employee2 b 
WHERE a.salary = b.salary;

Ответы [ 2 ]

1 голос
/ 07 января 2020

Используя NULL-safe равный , мы можем использовать:

SELECT a.name <=> b.name
FROM Employee1 a
JOIN Employee2 b ON a.salary = b.salary;
0 голосов
/ 07 января 2020

Вы можете переписать ваше выражение в другую форму CASE и проверить оба значения NULL:

SELECT CASE WHEN a.name IS NULL AND b.name IS NULL OR a.name = b.name THEN 1
            ELSE 0
       END
FROM Employee1 a
JOIN Employee2 b ON a.salary = b.salary;

Примечание. Я переписал запрос, чтобы использовать современный синтаксис JOIN .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...