小编典典

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

sql

我需要将INT数据类型的列ID转换为空字符串[‘’]。我不应该修改源列的数据类型,而需要在另一个表的转换中对其进行转换。ID列为“
nullable”,因为其中包含null。这是我的代码。

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

阅读 221

收藏
2021-04-22

共1个答案

小编典典

这是你想要的吗?

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

您必须将整个结果列变成单个列。如果要使用空白值,则类型为某种字符串。

在您的示例中,else id意味着的结果case是整数,这就是为什么要获得0或的原因NULL

2021-04-22