我想显示空白''而不是表达式字段的零值。如果exp是INT数据类型。每当我尝试使用(当exp1为0然后'',其他exp1结束为exp1)但它仍然得到0作为输出。任何帮助赞赏。感谢
答案 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
注意:varchar
和nvarchar
中的CAST
和CONVERT
的默认长度为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), '')