首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TSQL中的COALESCE函数

TSQL中的COALESCE函数
EN

Stack Overflow用户
提问于 2012-11-14 02:25:49
回答 8查看 216.9K关注 0票数 111

有人能解释一下TSQL中的COALESCE函数是如何工作的吗?语法如下

合并(x,y)

关于此函数的MSDN文档相当模糊

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2012-11-14 02:40:51

有人告诉我,COALESCE比ISNULL成本更低,但研究并没有表明这一点。ISNULL只接受两个参数,一个是被计算为NULL的字段,另一个是您想要的结果(如果它被计算为NULL )。COALESCE将接受任意数量的参数,并返回遇到的第一个非空的值。

这里有更详细的细节描述,http://www.mssqltips.com/sqlservertip/2689/deciding-between-coalesce-and-isnull-in-sql-server/

票数 74
EN

Stack Overflow用户

发布于 2012-11-14 02:27:06

我不确定为什么你认为文档是模糊的。

它简单地逐个遍历所有参数,并返回第一个参数,即NOT NULL

代码语言:javascript
运行
复制
COALESCE(NULL, NULL, NULL, 1, 2, 3)
=> 1


COALESCE(1, 2, 3, 4, 5, NULL)
=> 1


COALESCE(NULL, NULL, NULL, 3, 2, NULL)
=> 3


COALESCE(6, 5, 4, 3, 2, NULL)
=> 6


COALESCE(NULL, NULL, NULL, NULL, NULL, NULL)
=> NULL

它可以接受几乎任何数量的参数,但它们应该是相同的数据类型。(如果它们不是相同的数据类型,则使用_隐式地将它们转换为适当的数据类型

它类似于ISNULL(),但适用于多个参数,而不仅仅是两个参数。

它也是ANSI-SQL,而ISNULL()不是。

票数 215
EN

Stack Overflow用户

发布于 2013-09-24 03:43:39

这是我看待COALESCE...and的方式,希望它是有意义的。

在一个简单形式的…中。

空合并(FieldName,‘’)

因此,这可以转换为…如果"FieldName“为NULL,则使用"EMPTY”一词填充该字段值。

现在对于多个值。

合并(FieldName1、FieldName2、Value2、Value3)

如果Fieldname1中的值为null,则使用Fieldname2中的值填充它,如果FieldName2为NULL,则使用Value2填充它,依此类推。

AdventureWorks2012示例数据库的这段测试代码完美地工作,很好地直观地解释了COALESCE是如何工作的:

代码语言:javascript
运行
复制
SELECT Name, Class, Color, ProductNumber,
COALESCE(Class, Color, ProductNumber) AS FirstNotNull
FROM Production.Product
票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13366488

复制
相关文章

相似问题

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