sql - CASE return "true" 如果你比较 NULL 和 NULL?

sql - CASE return "true" if you compare NULL to NULL?

如果将 NULLNULL 进行比较,

DECODE 将 return "true"。 CASE不会。

如果我将 NULLNULL 进行比较,如何使 CASE 与 return 为真?

我当前查询的示例。一个问题是如果 a.namenull 并且 b.namenull,那么它将 return 为假。我希望它的行为类似于 oracle sql.

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

您可以将表达式重写为 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 语法。

使用 NULL-safe equal 我们可以使用:

SELECT a.name <=> b.name
FROM Employee1 a
JOIN Employee2 b ON a.salary = b.salary;