как предотвратить конвертацию больших чисел, как пример varchar 1444092 это 1.44409e + 006 - PullRequest
2 голосов
/ 22 марта 2012

это мой последний запрос

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, это было вычислено, и был добавлен символ '%', он конвертируется, но я получил эту ошибку

работает на sql 2005

1 Ответ

2 голосов
/ 22 марта 2012

Сначала CAST к десятичному номеру, затем к VARCHAR:

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