我有一个查询,该查询的总金额为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);
}
我只能通过查询来实现吗?
答案 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 |
编辑:但是,正如注释中进一步讨论的那样,您的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,这些链接可能会起作用。)