在MYSQL中将十进制转换为欧元货币

时间:2014-12-18 16:47:12

标签: mysql

从mysql数据库中选择一个十进制值并将其转换为mysql选择中的欧元currrency的最佳方法是什么。

当我选择"format(multiplier * (coalesce(Invoice.rent, 0) + coalesce(Invoice.furnished, 0) + coalesce(Invoice.gwe, 0) + coalesce(Invoice.service, 0) + coalesce(Invoice.gas, 0) + coalesce(Invoice.electricity, 0) + coalesce(Invoice.water, 0) + coalesce(Invoice.heat, 0) + coalesce(Invoice.tax, 0) + coalesce(Invoice.internet_tv, 0)) - coalesce(sum(Payment.amount),0),2)"

它返回一个像这样的数字1,000.25我希望它是1.000,25在MYSQL选择查询中执行此操作的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

文档显示FORMAT()最多有三个参数(强调我的):

  

FORMAT(X,D[,locale])

     

将数字X格式化为'#,###,###。##'等格式,舍入为D   小数位,并将结果作为字符串返回。如果D为0,则为   结果没有小数点或小数部分。

     

可选的第三个参数可以指定区域设置   用于结果编号的小数点,千位分隔符和   分隔符之间的分组。允许的区域设置值与   lc_time_names系统变量的合法值(参见章节   10.7,“MySQL服务器区域支持”)。如果未指定区域设置,则默认为“en_US”。

这可能是一个起点。 (您显然希望de_DE语言环境提供格式。)

答案 1 :(得分:0)

在数据库中,由于insert-non-english-decimal-points-in-mysql所述的原因,您无法将默认小数点分隔符从.更改为,

您可以使用此功能格式化输出值:


    CREATE FUNCTION f_change_decimal_separator(num_value VARCHAR(16)) RETURNS VARCHAR(16)
    BEGIN
      DECLARE char_value VARCHAR(16);
      SET char_value = REPLACE(num_value, ".", ";");
      SET char_value = REPLACE(char_value, ",", ".");
      SET char_value = REPLACE(char_value, ";", ",");
      RETURN char_value;
    END;

相关问题