从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选择查询中执行此操作的最佳方法是什么?
答案 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;