Sql server 2005 COALESCE在SQL SERVER中做什么

Sql server 2005 COALESCE在SQL SERVER中做什么,sql-server-2005,coalesce,Sql Server 2005,Coalesce,我想知道coalesce在这种情况下做了什么,我知道它返回第一个非空值,我也经历了这个过程 我想知道它在这里具体做了什么: DECLARE @EMPNO NUMERIC(22,5) SELECT @EMPNO = '' SELECT @EMPNO = COALESCE(?, 0) 我写这些语句的目的是,如果@EMPNO为空,我希望它被替换为零。恐怕我能从这三个陈述中做到这一点 帮帮我吧我想你必须这样做: SELECT @EMPNO = COALESCE(@EMPNO, 0) DECLAR

我想知道coalesce在这种情况下做了什么,我知道它返回第一个非空值,我也经历了这个过程

我想知道它在这里具体做了什么:

DECLARE @EMPNO NUMERIC(22,5)

SELECT @EMPNO = ''

SELECT @EMPNO = COALESCE(?, 0)
我写这些语句的目的是,如果@EMPNO为空,我希望它被替换为零。恐怕我能从这三个陈述中做到这一点


帮帮我吧

我想你必须这样做:

SELECT @EMPNO = COALESCE(@EMPNO, 0)
DECLARE @EMPNO NUMERIC(22,5)
SELECT @EMPNO = NULL
SELECT @EMPNO = COALESCE(@EMPNO, 0)
你知道你也会写作

SET @EMPNO = COALESCE(@EMPNO, 0)
不能将
数值
设置为空varchar。您必须将其设置为
NULL
。因此,您的完整代码应该如下所示:

SELECT @EMPNO = COALESCE(@EMPNO, 0)
DECLARE @EMPNO NUMERIC(22,5)
SELECT @EMPNO = NULL
SELECT @EMPNO = COALESCE(@EMPNO, 0)
或者您甚至不需要将
@EMPNO
设置为
NULL
。当您声明一个变量时,默认情况下它是
NULL
。所以你唯一需要的是:

DECLARE @EMPNO NUMERIC(22,5)
SELECT @EMPNO = COALESCE(@EMPNO, 0)
如果您在msdn上看到,它会说:

返回其参数中的第一个非空表达式


Reference

这是我遇到的错误:将数据类型varchar转换为数值时出错。