SQL除法运算获取小数结果问题求助
问题解决:Decimal类型输出为整数的原因及修复
问题出在str()函数的默认行为上:该函数如果不指定小数位数参数,会默认只保留整数部分,哪怕你的变量是decimal(16,2)类型,转换后也会丢失小数信息。
修复代码
把查询语句里的str(@fifteenPercent)改为指定小数位数的形式:
select '1-15: (' + trim(str(@fifteen)) +') ' + trim(str(@fifteenPercent, 6, 2)) + '%' as ratingB
说明
str()函数的完整语法是:str(numeric_expression [, length [, decimal_places]])
- 第三个参数
decimal_places默认是0,必须显式设置为2,才能保留两位小数 - 第二个参数
length是字符串总长度(包含小数点、小数位和整数部分),这里设为6足够容纳类似7.28这样的数值(整数位1位+小数点1位+小数位2位,总长度4,留冗余设6即可)
修改后就能得到期望的1-15: (38230) 7.28%输出。
内容的提问来源于stack exchange,提问作者Jakub Sluka
相关产品推荐
相关产品推荐

