0

我想知道在这种情况下合并做什么,我知道它返回第一个非空值,并且我也通过了这个链接

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

DECLARE @EMPNO NUMERIC(22,5)

SELECT @EMPNO = ''

SELECT @EMPNO = COALESCE(?, 0)

我写这些语句的目的是如果@EMPNO 是空白的,我希望它被替换为零。恐怕我能够从这三个陈述中实现这一目标。

帮帮我

4

1 回答 1

1

我认为你必须这样做:

SELECT @EMPNO = COALESCE(@EMPNO, 0)

你知道你也可以写

SET @EMPNO = COALESCE(@EMPNO, 0)

您不能将 a 设置NUMERIC为空的 varchar。您必须将其设置为NULL. 所以你的完整代码应该是这样的:

DECLARE @EMPNO NUMERIC(22,5)
SELECT @EMPNO = NULL
SELECT @EMPNO = COALESCE(@EMPNO, 0)

或者您甚至不需要将 设置@EMPNONULL。当你声明一个变量时,它是NULL默认的。所以你唯一需要的是:

DECLARE @EMPNO NUMERIC(22,5)
SELECT @EMPNO = COALESCE(@EMPNO, 0)

如果您在 msdn 上阅读,它会说:

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

参考这里

于 2012-05-04T06:41:21.500 回答