如果将NULL与NULL进行比较,DECODE将返回"true“。CASE不会。
如果将NULL与NULL进行比较,如何使CASE返回true
我当前查询的一个示例。一个问题是,如果a.name为null,b.name为null,那么它将返回false。我希望它的行为像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;发布于 2020-01-07 07:18:28
您可以将表达式重写为另一种形式的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-07 07:22:04
使用我们可以使用的NULL-safe equal:
SELECT a.name <=> b.name
FROM Employee1 a
JOIN Employee2 b ON a.salary = b.salary;https://stackoverflow.com/questions/59620215
复制相似问题