为了账号安全,请及时绑定邮箱和手机立即绑定

在 MySQL 中使用印度数字分隔符格式化货币金额

在 MySQL 中使用印度数字分隔符格式化货币金额

慕尼黑5688855 2022-01-19 09:45:30
我有一个查询,它给了我像 100000.0000 这样的总金额,我想显示这个像100000必须显示为卢比。1,00,000.00这是我的查询:String sql = " select distinct round(sum(netamount)) as amount from syncbill where cancelled<>'Y' and year(curdate())=year(billdate)";ResultSet resultSetYtd = statement.executeQuery(YtdQuery);while (resultSetYtd.next()) {  String AmountYtd = resultSetYtd.getString("amount");  system.out.println(AmountYtd);}我可以仅通过查询来实现吗?
查看完整描述

2 回答

?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

您正在寻找印度数字分隔符(十万、千万)。我们可以使用Format()函数,将第三个参数设置为en_IN(英语-印度)语言环境。第二个参数设置为 2 用于指定小数点后 2 个小数位.。最后,CONCAT('Rs.') 将货币添加到结果中。


select CONCAT('Rs. ', FORMAT(sum(netamount), 2, 'en_IN')) 

from syncbill

演示


select format(100000,2,'en_IN');


| format(100000,2,'en_IN') |

| ------------------------ |

| 1,00,000.00              |

在 DB Fiddle 上查看


编辑:但是,正如评论中进一步讨论的那样,您的 MySQL 服务器版本非常旧(5.1),它不支持Format()带有 Locale 参数的功能。在此处查看 5.1 文档。


查看完整回答
反对 回复 2022-01-19
?
紫衣仙女

TA贡献1839条经验 获得超15个赞

5.5.0的变更日志说

FORMAT()函数现在支持可选的第三个参数,该参数允许指定区域设置以用于结果数字的小数点、千位分隔符以及分隔符之间的分组。允许的区域设置值与lc_time_names系统变量的合法值相同(请参阅MySQL 服务器区域设置支持)。例如,FORMAT(1234567.89,2,'de_DE')的结果是 1.234.567,89。如果未指定语言环境,则默认为“en_US”。

所以,如果你有 5.5 或更高版本,它应该可以工作。如果您仍然遇到问题,请提供更多详细信息。

(警告:当 5.5 达到 EOL 时,这些链接将断开。将链接编辑为 5.6;这些可能有效。)


查看完整回答
反对 回复 2022-01-19
  • 2 回答
  • 0 关注
  • 305 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信