这是我的最终查询
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 我需要当指示器包含单词 porcentaje 时,这是计算出来的,并且添加了字符“%”,它会转换,但我遇到了这个错误
使用 SQL 2005
最佳答案
首先,转换为 DECIMAL 数字,然后转换为 VARCHAR:
cast(cast((round(([Valor Censo Elegido]/@cantidad)*100),0) as decimal(50,0)) as varchar(50))+' %'
关于sql - 如何防止将大数字转换为 varchar 示例 1444092 是 1.44409e+006,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9814547/