首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >强制COALESE( NULL,NULL)返回NULL

强制COALESE( NULL,NULL)返回NULL
EN

Stack Overflow用户
提问于 2020-03-24 00:08:37
回答 1查看 126关注 0票数 2

在SQL SERVER中,考虑到: Col1和Col2包含数值和空值。

代码语言:javascript
复制
SELECT 
COALESCE(Col1,Col2) 

返回错误:“COALESCE的参数中至少有一个必须是非空常量的表达式。”考虑到Col1和Col2为NULL,我想在本例中强制它返回NULL值。

对我来说,这个变通方法似乎并不优雅/效率低下:

代码语言:javascript
复制
SELECT
NULLIF(COALESCE(Col1 ,Col2 ,''),'') 

请注意,Col1和Col2是数值字段,不能将'‘作为值。

还有其他建议吗?

谢谢你的帮助

EN

回答 1

Stack Overflow用户

发布于 2020-03-24 00:15:23

下面的代码可以工作:

代码语言:javascript
复制
SELECT COALESCE(Col1, Col2) 
FROM . . .   -- references here that define COL1 and COL2

如果两列都为NULL,它将返回NULL (在本例中类型为整数)。

只有当列显式为NULL时,您才会收到您提到的错误。即使是计算似乎也绕过了这一点:

代码语言:javascript
复制
select coalesce(null + 3, null)
--> NULL rather than an error

下面的代码甚至返回NULL而不是错误:

代码语言:javascript
复制
declare @col1 int;
declare @col2 int;

select coalesce(@col1, @col2);

Here是一个db<>fiddle。

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

https://stackoverflow.com/questions/60817295

复制
相关文章

相似问题

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