使用ISNULL将INT列值转换为空字符串

时间:2016-10-08 20:27:31

标签: sql sql-server-2008 type-conversion isnull

我需要将INT数据类型的列ID转换为空字符串['']。我不应该修改源列数据类型,但需要在其他表的转换中转换它。 ID列是“可空的”,因为它在其中为空。这是我的代码。

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

1 个答案:

答案 0 :(得分:3)

这是你想要的吗?

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

您必须将整个结果列转换为单个列。如果你想要一个空白值,那么类型就是某种字符串。

在您的示例中,else id表示case的结果是整数,这就是您获得0NULL的原因。