我需要一个用MySQL编写的函数来将数字(正数和负数)相加,这些数字位于单个列中,并由分隔符分隔。本例中的分隔符是"?“。该函数还需要忽略不是数字、不是减号("-")、不是句点(".")和不是分隔符(例如,"?")的无关字符。
例如,名为"BalAdjAmt“的列,其值可以是:
500.00?500.00?-1000.00
500.00
500.00?500.00
500.00?500.00?-1000.00 B该函数在此数据集上运行时的结果应为:
0
500.00
1000.00
0任何提示都会很有帮助。提前谢谢。
发布于 2015-04-24 23:31:14
您可以使用common_schema来简化这项工作。然后您可以创建如下所示的函数:
DELIMITER $$
DROP FUNCTION IF EXISTS `fn_test`$$
CREATE FUNCTION `fn_test`(`_value` VARCHAR(500))
RETURNS DECIMAL(7,2)
BEGIN
DECLARE `_iteration`, `_num_tokens` INT UNSIGNED DEFAULT 0;
DECLARE `delim` CHAR(1) DEFAULT '?';
DECLARE `_return` DECIMAL(7,2) DEFAULT 0;
SET `_num_tokens` := (SELECT `common_schema`.`get_num_tokens`(`_value`, `delim`));
WHILE `_iteration` < `_num_tokens` DO
SET `_iteration` := `_iteration` + 1;
SET `_return` := `_return` + (SELECT CAST(`common_schema`.`split_token`(`_value`, `delim`, _iteration) AS DECIMAL(7,2)));
END WHILE;
RETURN `_return`;
END$$
DELIMITER ;https://stackoverflow.com/questions/29809851
复制相似问题