我想知道在这种情况下合并做什么,我知道它返回第一个非空值,并且我也通过了这个链接。
我想知道它在这里具体做了什么:
DECLARE @EMPNO NUMERIC(22,5)
SELECT @EMPNO = ''
SELECT @EMPNO = COALESCE(?, 0)
我写这些语句的目的是如果@EMPNO 是空白的,我希望它被替换为零。恐怕我能够从这三个陈述中实现这一目标。
帮帮我
我想知道在这种情况下合并做什么,我知道它返回第一个非空值,并且我也通过了这个链接。
我想知道它在这里具体做了什么:
DECLARE @EMPNO NUMERIC(22,5)
SELECT @EMPNO = ''
SELECT @EMPNO = COALESCE(?, 0)
我写这些语句的目的是如果@EMPNO 是空白的,我希望它被替换为零。恐怕我能够从这三个陈述中实现这一目标。
帮帮我
我认为你必须这样做:
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)
或者您甚至不需要将 设置@EMPNO
为NULL
。当你声明一个变量时,它是NULL
默认的。所以你唯一需要的是:
DECLARE @EMPNO NUMERIC(22,5)
SELECT @EMPNO = COALESCE(@EMPNO, 0)
如果您在 msdn 上阅读,它会说:
返回其参数中的第一个非空表达式。
参考这里