0

DECODENULL如果您与 比较,将返回“true” NULLCASE将不会。

如果我比较,我如何使CASE返回 true ?NULLNULL

我当前查询的一个示例。一个问题是如果a.nameisnullb.nameis null,那么它将返回 false。我希望它的行为类似于DECODEoracle sql 中的函数。

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

2 回答 2

1

使用NULL 安全相等我们可以使用:

SELECT a.name <=> b.name
FROM Employee1 a
JOIN Employee2 b ON a.salary = b.salary;
于 2020-01-06T23:22:04.430 回答
0

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

于 2020-01-06T23:18:27.813 回答