首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果将NULL与NULL进行比较,sql - CASE返回"true“?

问如果将NULL与NULL进行比较,sql - CASE返回"true“?
EN

Stack Overflow用户
提问于 2020-01-07 07:15:29
回答 2查看 198关注 0票数 0

如果将NULL与NULL进行比较,DECODE将返回"true“。CASE不会。

如果将NULL与NULL进行比较,如何使CASE返回true

我当前查询的一个示例。一个问题是,如果a.name为null,b.name为null,那么它将返回false。我希望它的行为像oracle sql中的DECODE函数。

代码语言:javascript
复制
SELECT CASE a.name
    WHEN b.name THEN 1
    ELSE 0
END,
FROM Employee1 a, Employee2 b 
WHERE a.salary = b.salary;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-07 07:18:28

您可以将表达式重写为另一种形式的CASE,并对两个NULL值进行测试:

代码语言:javascript
复制
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语法。

票数 0
EN

Stack Overflow用户

发布于 2020-01-07 07:22:04

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

代码语言:javascript
复制
SELECT a.name <=> b.name
FROM Employee1 a
JOIN Employee2 b ON a.salary = b.salary;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59620215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档