Nas*_*ici 2 sql t-sql sql-server
在 SQL SERVER 中考虑以下事实:Col1 和 Col2 包含数字和 NULL 值
SELECT
COALESCE(Col1,Col2)
Run Code Online (Sandbox Code Playgroud)
返回错误:“COALESCE 的至少一个参数必须是非 NULL 常量的表达式。” 考虑到 Col1 和 Col2 为 NULL,我想在这种情况下强制它返回 NULL 值。
解决方法对我来说似乎不优雅/低效:
SELECT
NULLIF(COALESCE(Col1 ,Col2 ,''),'')
Run Code Online (Sandbox Code Playgroud)
请注意,Col1 和 Col2 是数字字段,不能将 '' 作为值。
还有其他建议吗?
感谢您的帮助
这段代码的工作原理:
SELECT COALESCE(Col1, Col2)
FROM . . . -- references here that define COL1 and COL2
Run Code Online (Sandbox Code Playgroud)
如果两列都是NULL,它将返回NULL(在您的情况下输入为整数)。
唯一一次出现您提到的错误是当列是明确的 NULL时。甚至计算似乎也绕过了这个:
select coalesce(null + 3, null)
--> NULL rather than an error
Run Code Online (Sandbox Code Playgroud)
以下甚至返回NULL而不是错误:
declare @col1 int;
declare @col2 int;
select coalesce(@col1, @col2);
Run Code Online (Sandbox Code Playgroud)
这是一个 db<>fiddle。