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

时间:2018-11-13 11:58:44

标签: java mysql

我有一个查询,该查询的总金额为100000.0000,我想显示为 100000 ,必须显示为Rs。 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 个答案:

答案 0 :(得分:2)

您正在寻找印度数字分隔符(十万,十万)。我们可以使用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              |

View on DB Fiddle


编辑:但是,正如注释中进一步讨论的那样,您的MySQL服务器版本明显较旧(5.1),并且不支持带有Locale参数的Format()函数。查看5.1文档here

答案 1 :(得分:1)

5.5.0 的更改日志说

  

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

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

(注意:当EOL达到5.5时,这些链接将断开。将链接编辑为5.6,这些链接可能会起作用。)