我需要将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
这是你想要的吗?
select coalesce(cast(id as varchar(255)), '') from #v;
您必须将整个结果列变成单个列。如果要使用空白值,则类型为某种字符串。
在您的示例中,else id意味着的结果case是整数,这就是为什么要获得0或的原因NULL。
else id
case
0
NULL