首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用COALESCE()

使用COALESCE()
EN

Stack Overflow用户
提问于 2018-07-31 08:44:41
回答 1查看 194关注 0票数 0

我在here上发现了这个面试问题。给定Customers表的以下内容:

代码语言:javascript
运行
复制
|---------------------|------------------|------------------|
|         Id          |     Name         |    ReferredBy    |
|---------------------|------------------|------------------|
|          1          |     John Doe     |      NULL        |
|---------------------|------------------|------------------|
|          2          |    Jane Smith    |      NULL        |
|---------------------|------------------|------------------|
|          3          |    Anne Jenkins  |      2           |
|---------------------|------------------|------------------|
|          4          |    Eric Branford |      NULL        |
|---------------------|------------------|------------------|
|          5          |    Pat Richards  |      1           |
|---------------------|------------------|------------------|
|          6          |    Alice Barnes  |      2           |
|---------------------|------------------|------------------|

下面是一个查询,用于返回未由Jane Smith推荐的客户列表:

代码语言:javascript
运行
复制
SELECT Name FROM Customers WHERE ReferredBy <> 2;

查询的结果是什么?为什么?什么是写它的更好的方式?网站上提到的答案是:

代码语言:javascript
运行
复制
SELECT Name FROM Customers WHERE ISNULL(ReferredBy, 0) <> 2;

我的问题是,我们如何使用COALESCE()编写相同的查询,因为如前所述,here COALESCE()只返回第一个non-null值。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-31 08:48:27

在给定的情况下,您可以通过替换函数名来简单地将isnull()替换为coalesce()

如果isnull(referredby, 0)为空,则referredby返回0,否则返回referredby。如果referredby为null,0是第一个not null表达式,如果referredby is not null,则referredby是第一个not null表达式并返回。

实际上,isnull()coalesce()之间的唯一区别是isnull()只能接受两个表达式,而coalesce()需要两个或更多。使用isnull()时,如果有两个以上的表达式,则需要嵌套调用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51604027

复制
相关文章

相似问题

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