В mysql пользовательская функция, как установить динамический тип возвращаемых данных

В mysql пользовательская функция, как установить динамический тип возвращаемых данных на основе выполнения функции.

DELIMITER $$
CREATE FUNCTION financeNumberFormat(number double) RETURNS DECIMAL(10,5)
    DETERMINISTIC
BEGIN
    DECLARE decpoint int(10);

    SELECT c_maximum_decimal_values INTO decpoint
    FROM mst_xxx
    WHERE 1 LIMIT 1;    


    SET decpoint = FORMAT(number,decpoint); 

 RETURN (decpoint);
END

Мой вывод идет как ниже.

financeNumberFormat(5.345)  
5.000

Точка отклонения может варьироваться, поэтому возвращаемое значение должно основываться на этой десятичной точке. Есть ли способ добиться этого.? Заранее спасибо.

1 ответ

Прежде всего, FORMAT возвращает строку, так как она может содержать запятые (разделители тысяч). Итак, вы можете как вернуться VARCHAR(99), К тому же, вы можете также кормить в строках, если ваши цифры действительно DOUBLE,

Обратите внимание, что происходит от DECIMAL(m,n) в DOUBLEзатем округление (через FORMAT) г до некоторого числа десятичных знаков выполняет 2 округления, на один больше, чем вам действительно нужно.

Еще одно примечание: во многих ситуациях в MySQL (не во всех) строка, содержащая числовые данные, не уступает DOUBLE или же DECIMAL, (Заметным исключением является WHERE varchar_col = 1234 не сможет использовать INDEX(varchar_col).)

Другие вопросы по тегам