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

标签 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 我需要当指示器包含单词 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/

相关文章:

sql - 如何计算列的平均值,然后将其包含在 SQL 中的选择查询中

r - 使用数值条件对一系列列进行编码

mysql - 带有 LIKE 和子字符串的 When 语句

c# - 为什么要对 SqlTransaction 使用 using 语句?

c# - 如何在C#中使用SqlTransaction

sql - 没有 Rank() 的排名

MySQL:更新同一列下多行的值

sql - 在 bash 中循环遍历 PostgreSQL 表

r - dplyr 通过比较变量和不同大小的向量来改变变量

amazon-web-services - 如何使用 AWS RDS DataService (Aurora Serverless) 跨多个 SELECT 实现一致读取