我需要一个用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
任何指针都会有所帮助。提前谢谢。
答案 0 :(得分: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 ;