使用 ISNULL 将 INT 列值转换为空字符串
Convert INT column values to an empty string using ISNULL
我需要将 INT 数据类型的列 ID 转换为空字符串 ['']。我不应该修改源列的数据类型,但需要在我的转换中转换它在其他table。 ID 列是 "nullable" 因为它在 it.This 中有 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;
这个returns:
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
它returns:
ID_Column
1
2
3
4
5
0
0
这是你想要的吗?
select coalesce(cast(id as varchar(255)), '')
from #v;
您必须将整个结果列变成一个列。如果你想要一个空值,那么类型就是某种字符串。
在您的示例中,else id
表示 case
的结果是一个整数,这就是您得到 0
或 NULL
的原因。
我需要将 INT 数据类型的列 ID 转换为空字符串 ['']。我不应该修改源列的数据类型,但需要在我的转换中转换它在其他table。 ID 列是 "nullable" 因为它在 it.This 中有 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;
这个returns:
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
它returns:
ID_Column
1
2
3
4
5
0
0
这是你想要的吗?
select coalesce(cast(id as varchar(255)), '')
from #v;
您必须将整个结果列变成一个列。如果你想要一个空值,那么类型就是某种字符串。
在您的示例中,else id
表示 case
的结果是一个整数,这就是您得到 0
或 NULL
的原因。