如何在SQL Server中根据字段值截断或添加小数位?
如何用T-SQL实现按货币类型格式化金额显示?
我来帮你搞定这个需求!我们可以通过CASE条件分支搭配STR()函数来完成不同货币的金额格式化,完美匹配你对不同小数位数的要求。
完整实现代码
DECLARE @Currency TABLE (ccy CHAR(3), amount MONEY) INSERT INTO @Currency VALUES ('USD',12.34), ('AUD',12.34), ('INR',12.34) SELECT ccy, CASE ccy WHEN 'USD' THEN STR(amount, 10, 0) -- 截断小数,只保留整数部分 WHEN 'AUD' THEN STR(amount, 10, 2) -- 固定保留2位小数 WHEN 'INR' THEN STR(amount, 10, 4) -- 固定保留4位小数,自动补零 END AS amount FROM @Currency
代码说明
CASE语句:根据ccy字段的值,对不同货币执行对应的格式化逻辑STR()函数:这个函数专门用于将数值转换为指定格式的字符串,参数含义是STR(要转换的数值, 字符串总长度, 小数位数)。这里总长度设为10是为了兼容大部分金额场景,你可以根据实际业务调整这个值- 对于USD,我们设置小数位数为0,
STR()会直接截断小数部分(不是四舍五入,正好得到你要的12);AUD和INR分别设置2位和4位小数,不足的位数会自动补零,完全符合你的期望输出
执行结果
| amount |
|---|
| 12 |
| 12.34 |
| 12.3400 |
内容的提问来源于stack exchange,提问作者Mar1009
相关产品推荐
相关产品推荐

