我有一个整数列,其中我需要添加一个case语句以显示在报表中。如果INT柱= -1,在该列中的数据应该是DOWN否则int值/ 100CASE语句失败,数据转换错误
如果我试图像下面
CASE WHEN LOADVALUE = -1 then 'DOWN'
ELSE LOADVALUE/100 END
如所预期的,我收到一个错误:错误转换varchar为int。请帮忙。
我有一个整数列,其中我需要添加一个case语句以显示在报表中。如果INT柱= -1,在该列中的数据应该是DOWN否则int值/ 100CASE语句失败,数据转换错误
如果我试图像下面
CASE WHEN LOADVALUE = -1 then 'DOWN'
ELSE LOADVALUE/100 END
如所预期的,我收到一个错误:错误转换varchar为int。请帮忙。
当您使用case
请确认,when
子句和else
子句中的数据类型是一致的。
CASE WHEN LOADVALUE = -1 then 'DOWN'
ELSE cast(LOADVALUE/100 as varchar) END
你需要投你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.0位。但如果您想要Siyual建议的非整数结果,您肯定需要/ 100.0位。如果你真的担心,那么你可以简单地做(LOADVALUE * 0.1) –