如何防止转换大数字作为varchar示例1444092是1.44409e + 006

时间:2012-03-21 23:50:02

标签: sql case-when sqltransaction sql-convert

这是我的最终查询

select Codigo,  Indicador,
case when Indicador like '%Porcentaje%' then cast((round((([Valor Censo Elegido]/@cantidad)*100),0)) as varchar(50))+' %' else cast([Valor Censo Elegido]as varchar(50)) end as [Valor Censo Elegido],
case when Indicador like '%Porcentaje%' then cast((round((([Valor Censo Actual]/@cantidad)*100),0))as varchar(50))+' %' else cast([Valor Censo Actual]as varchar(50)) end as [Valor Censo Actual]
--case when Indicador like '%Porcentaje%' then round((([Valor Censo Elegido]/@cantidad)*100),0)  else ([Valor Censo Elegido]) end as [Valor Censo Elegido],
--case when Indicador like '%Porcentaje%' then round((([Valor Censo Actual]/@cantidad)*100),0) else ([Valor Censo Actual]) end as [Valor Censo Actual]

from  #unionfinal

但是大数字转换为1.44409e + 006 我需要当indicador包含单词porcentaje时计算出来并添加了char'%',它转换但我得到了这个bug

在sql 2005上工作

1 个答案:

答案 0 :(得分:2)

首先,CAST为DECIMAL编号,然后为VARCHAR:

cast(cast((round(([Valor Censo Elegido]/@cantidad)*100),0) as decimal(50,0)) as varchar(50))+' %'