具有多个THEN子句的SQL Server CASE语句

时间:2018-11-14 11:43:38

标签: sql sql-server

我见过几个类似的问题,但没有一个满足我的需求。我需要在第一个之后添加另一个THEN语句。我的专栏包含int。当它返回NULL时,我需要它显示一个空格,但是当我尝试下面的代码时,我只会得到'0'。

CASE 
    WHEN Column1 IS NULL  
    THEN ''
    ELSE Column1
END

如果我尝试在THEN后面加上一个小号,那么它告诉我它不能将其从int转换。我需要将其转换为varchar,然后将其输出更改为空白,例如:

例如

CASE 
    WHEN Column1 IS NULL 
    THEN CONVERT(varchar(10), Column1)
    THEN ''
    ELSE Column1
END

有没有办法做到这一点?

谢谢 罗布

1 个答案:

答案 0 :(得分:4)

promise.then表达式返回单个值-具有给定类型。如果要得到字符串结果,则需要确保case中的所有路径都返回字符串:

case

这更简单地用CASE WHEN Column1 IS NULL THEN '' ELSE CAST(Column1 AS VARCHAR(255)) END 来写:

COALESCE()

您不能将整数显示为“空白”(使用COALESCE(CAST(Column1 as VARCHAR(255)), '') 值除外)。