用空格替换0

时间:2014-05-22 22:25:06

标签: sql sql-server tsql

我想显示空白''而不是表达式字段的零值。如果exp是INT数据类型。每当我尝试使用(当exp1为0然后'',其他exp1结束为exp1)但它仍然得到0作为输出。任何帮助赞赏。感谢

3 个答案:

答案 0 :(得分:6)

如果exp是数字类型,则需要使用CAST or CONVERT将其转换为字符串。另外,我不相信exp1 is 0会起作用;我认为您正在寻找exp1 = 0

尝试这样的事情:

(case when exp1 = 0 then '' else cast(exp1 as varchar(30)) end) as exp1

(case when exp1 = 0 then '' else convert(varchar(30), exp1) end) as exp1

或使用简单的CASE表达式,如下所示:

(case exp1 when 0 then '' else cast(exp1 as varchar(30)) end) as exp1

(case exp1 when 0 then '' else convert(varchar(30), exp1) end) as exp1

注意:varcharnvarchar中的CASTCONVERT的默认长度为30,因此cast(exp1 as varchar)convert(varchar, exp1)可用作好吧,但实际上,无论何时使用它们,最好指定这些类型的长度。


但是,如果您要做的是将值0转换为null,那么相当容易。只需使用NULLIF

nullif(exp1, 0) exp1

如果NULL的计算结果为0,则返回exp1,否则返回exp1的值。当您将此值插入表中时,请确保要插入的列可以为空。如果您不熟悉使用null,请参阅该主题的Wikipedia article以获取更多信息。

答案 1 :(得分:0)

我使用了RegEx

{
    cast(trim(
    replace(to_char(value),'0','' )) as int)
}

答案 2 :(得分:0)

可能最短的方法是:

ISNULL(CAST(NULLIF(exp1,0) AS VARCHAR), '')