我正在尝试在select语句中执行以下操作:
表A有一个名为f_total的列。
f_total是nvarchar(50)null
存储在f_total中的数据是整数。例如。 350万
我需要将f_total除以100000000,将其四舍五入到小数点后3位,并连接" $"在输出之前和" mm"输出后。
这就是我在选择中所拥有的:
iif(f_total > 0, '$' + cast(round(cast(f_total/100000000 as float),3) as nvarchar(20)),'') +
'mm ' as Text1
联合 0为Text1
解决方案:union的第二部分中的INT优先,这就是为什么union的第一部分强制转换为int数据类型的原因。
改变" 0为Text1"到"' 0'作为Text1" (单引号约为0)
如果f_total = 3500000,输出应为0.035mm
我尝试了许多演员组合,但一直在犯错误#34;转换从nvarchar / varchar转换为int数据类型。那里有很多帖子,但我似乎无法找到适合这种情况的答案。
答案 0 :(得分:1)
你只需要将f_total转换为float。
您的查询应该是这样的:
iif(f_total > 0, '$' + cast(round(cast(cast(f_total as float)/100000000
as float),3) as nvarchar(20)),'') +
'mm ' as Text1
输出:$ 0.035
我相信,你会得到你渴望的输出。
谢谢。
答案 1 :(得分:0)
自2012版以来,您可以使用 CONCAT 功能:
SELECT IIF(f_total > 0, CONCAT('$', CONVERT(FLOAT, f_total)/100000000,'mm'),'')
对于早于2012年的版本,您可以使用:
SELECT IIF(f_total > 0, '$' + CONVERT(VARCHAR(6),CONVERT(FLOAT, f_total)/100000000) + 'mm','')