2013-08-30 24 views
0

我想在我的SP結束時使用ISNULL和REPLACE在同一選擇。使用替換和isnull在同一選擇

​​

是我現在試過的方式,它真的沒有工作。如何在一個查詢中結合這兩個?

乾杯

+0

「不工作」不是一個很好的問題描述。當COL01是/不是空時,你想得到什麼結果(錯誤,意外結果,...)?請通過編輯您的帖子來指定。 –

回答

3

在下文中,將首先被「已執行」的ISNULL,所以如果COL01具有空值,則空字符串將被返回,並傳遞給REPLACE函數,其將取代所有的」。 「與','。如果該值爲NULL,則返回空字符串。

REPLACE(ISNULL(COL01,''),'.',',') 
2

既然你替換值永遠不會包含一個.,你可以只用一個ISNULL(或COALESCE )包裹REPLACE

SELECT row, COALESCE(REPLACE(COL01,'.',','),'') 

REPLACENULL任何參數將只需返回NULL,您不需要做任何事情來保護它。


COALESCE通常優選因爲:a)它是標準的SQL,B)它可以推廣到兩個以上的參數,以及c)它尊重正常型的優先級規則。另一方面ISNULL是非標準的,只能用兩個參數調用,並且(如果它使用第二個參數)強制第二個參數轉換爲與第一個參數相同的類型。

我推薦使用ISNULL而不是COALESCE的唯一地方是在表中或視圖中創建計算列時,您傳遞的第二個參數爲非NULL,並且您希望列的元數據中的定義爲not null