我有一个整数列,我需要添加一个case语句以显示在报表中。如果该int列= -1,则该列中的数据应为DOWN,否则为int值/ 100
如果我尝试下面的话
CASE WHEN LOADVALUE = -1 then 'DOWN'
ELSE LOADVALUE/100 END
正如预期的那样,我收到一个错误:将varchar转换为int时出错。请帮忙。
答案 0 :(得分:3)
您需要将ELSE
结果转换为VARCHAR
CASE WHEN LOADVALUE = -1 THEN 'DOWN'
ELSE CONVERT(VARCHAR (10), LOADVALUE/100) END
您应该记住的一点是,由于LOADVALUE
的数据类型是INT
,因整数除法可能会得到意外的结果。您可能需要考虑使用它:
CASE WHEN LOADVALUE = -1 THEN 'DOWN'
ELSE CONVERT(VARCHAR (10), (LOADVALUE * 1.0)/100.0) END
这会将LOADVALUE
转换为小数以正确进行除法
(如果你真的想要整数除法,请忽略这个替代方案)
答案 1 :(得分:2)
当您使用case
时,when
子句和else
子句中的数据类型是一致的。
CASE WHEN LOADVALUE = -1 then 'DOWN'
ELSE cast(LOADVALUE/100 as varchar) END