【发布时间】:2020-03-23 16:08:37
【问题描述】:
在 SQL 服务器中 考虑到以下事实: Col1 和 Col2 包含数字和 NULL 值
SELECT
COALESCE(Col1,Col2)
返回错误:“COALESCE 的至少一个参数必须是不是 NULL 常量的表达式。” 考虑到 Col1 和 Col2 都是 NULL,我想在这种情况下强制它返回 NULL 值。
解决方法对我来说似乎不优雅/效率低下:
SELECT
NULLIF(COALESCE(Col1 ,Col2 ,''),'')
请注意,Col1 和 Col2 是数字字段,不能将 '' 作为值。
还有什么建议吗?
感谢您的帮助
【问题讨论】:
-
我迷路了。
coalesce(null, null)会出现该错误,coalesce(col1, col2)不会出现该错误:dbfiddle.uk/…。 -
@GordonLinoff 谢谢,根据你的例子,它解决了我的问题!
-
如果
Col1或Col2是数字数据类型,那么''(在该表达式中)也不会返回空字符串,它会返回0(因为@ 987654331@ 将被隐式转换为最高优先级的数据类型Col1和Col2)。但是''或0都不是NULL。 -
来自 MS Docs:“至少有一个空值必须是 typed NULL。”
标签: sql sql-server tsql