2012-05-04 33 views
0

我想知道在這種情況下coalesce做什麼,我知道它返回第一個非空值,我也經歷了這個linkCOALESCE在SQL SERVER中做什麼

我想知道它有什麼特別的位置:

DECLARE @EMPNO NUMERIC(22,5) 

SELECT @EMPNO = '' 

SELECT @EMPNO = COALESCE(?, 0) 

我寫這些語句的意圖是,如果@EMPNO是空白的,我希望它與零點來代替。恐怕我能從這三個陳述中實現這一點。

幫我出

回答

1

我認爲你必須這樣做:

SELECT @EMPNO = COALESCE(@EMPNO, 0) 

你知道你也可以寫

SET @EMPNO = COALESCE(@EMPNO, 0) 

你不能設置一個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上閱讀它說:

返回其參數中第一個非空表達式。

參考here

+0

這是我發現了錯誤:錯誤轉換數據類型爲varchar到數字。 –

+0

更新了答案 – Arion