В 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)
.)