【问题标题】:Convert INT column values to an empty string using ISNULL使用 ISNULL 将 INT 列值转换为空字符串
【发布时间】:2017-02-17 14:54:57
【问题描述】:

我需要将 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

【问题讨论】:

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


    【解决方案1】:

    这是你想要的吗?

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

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

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

    【讨论】:

    • 太棒了!完美运行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-14
    • 2015-07-17
    • 2020-08-14
    • 1970-01-01
    相关资源
    最近更新 更多