我需要一个用 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
任何指示都会有帮助。提前致谢。
最佳答案
您可以使用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 ;
关于mysql - 添加由分隔符分隔的非 1NF 格式的值的函数/过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29809851/