2016-10-08 78 views
3

我需要將INT數據類型的列ID轉換爲空字符串['']。我不應該修改源列數據類型,但需要在另一個表中的轉換中進行轉換。 ID列是「空的」,因爲它有空。這是我的代碼。使用ISNULL將INT列值轉換爲空字符串

CREATE TABLE #V(ID INT) ; 

INSERT INTO #V 
    VALUES (1),(2),(3),(4),(5),(NULL),(NULL) ; 

SELECT CASE WHEN CAST(ISNULL(ID,'') AS VARCHAR(10)) = '' THEN '' ELSE ID END AS ID_Column 
FROM #V; 

這將返回:

ID_Column 
1 
2 
3 
4 
5 
NULL 
NULL 

,當我修改我的CASE語句,如下所示:

CASE WHEN CAST(ISNULL(ID,'') AS VARCHAR(10)) = '' THEN '' ELSE ID END AS ID_Column 

返回:

ID_Column 
1 
2 
3 
4 
5 
0 
0 

回答

3

這是你想要的嗎?

select coalesce(cast(id as varchar(255)), '') 
from #v; 

您必須將整個結果列轉換爲單個列。如果你想要一個空白值,那麼類型就是某種字符串。

在你的例子中,else id意味着case的結果是一個整數,這就是爲什麼你得到0NULL

+1

太棒了!完美的作品。 – enigma6205