2014-12-18 4 views
0

Каков наилучший способ выбрать десятичное значение из базы данных mysql и преобразовать его в курсор евро в выборе mysql.Преобразование десятичной суммы в валюту евро в MYSQL

Когда я выбираю "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

, что ваш входной шаблон? –

+0

все поля имеют тип DECIMAL –

+1

Вы должны делать форматирование в своем приложении, а не в SQL. –

ответ

1

документация показывает, что FORMAT() имеет три аргумента (курсив мой):

FORMAT(X,D[,locale])

Форматирует число X в формате, как «#, ###, ### #. # ', округленный до D десятичных знаков и возвращающий результат в виде строки. Если D равно 0, результат не имеет десятичной или дробной части.

Дополнительный третий параметр позволяет локаль быть определены, чтобы быть используется для десятичной точки в результате числа, в разделитель тысяч, а группировки между сепараторами. Допустимые значения локали совпадают с значениями - допустимыми значениями для системной переменной lc_time_names (см. Раздел 10.7 «Поддержка локали сервера MySQL»). Если локаль не указана, по умолчанию используется значение «en_US».

Это может быть отправная точка. (Вы, видимо, хотите формат предоставленный de_DE локали.)

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; 

Смежные вопросы