如何在Oracle SQL中将数值转换为印度货币格式
Oracle 印度货币格式转换实现
你可以直接使用Oracle内置的TO_CHAR()函数,配合印度数字分组规则的NLS参数实现需求,不需要自定义函数,性能更高:
核心查询语句
SELECT TO_CHAR( money, 'FM999G99G99G99G990D00', 'NLS_NUMERIC_CHARACTERS = ''.,'' NLS_GROUPING = ''3,2''' ) AS formatted_money FROM 你的表名;
参数说明
- 格式掩码说明:
FM:去除输出结果的前导空格,避免返回值带多余空白G:对应配置的组分隔符(逗号)D:对应配置的小数点(点号)- 末尾
00:强制保留两位小数,不足自动补0 - 前面的
999G99G99G99G99覆盖了最高到十亿级的数值范围,可根据你的实际业务数值范围调整长度
- NLS参数说明:
NLS_NUMERIC_CHARACTERS = '.,':指定小数点为.,组分隔符为,,和示例格式要求一致NLS_GROUPING = '3,2':指定印度特有的分组规则:从右往左第一组长度为3,之后所有分组长度为2,完美适配印度卢比的千分位格式
效果验证
以你的示例值880856.00为例,执行上述语句后返回结果为8,80,856.00,完全匹配要求。
如果需要在结果中增加卢比符号₹,可以调整格式掩码和参数即可:
SELECT TO_CHAR( money, 'FML999G99G99G99G990D00', 'NLS_NUMERIC_CHARACTERS = ''.,'' NLS_GROUPING = ''3,2'' NLS_CURRENCY = ''₹''' ) AS formatted_money_with_symbol FROM 你的表名;
上述语句返回结果为₹8,80,856.00。
内容的提问来源于stack exchange,提问作者Shah
相关产品推荐
相关产品推荐

