1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
CREATE FUNCTION SPLIT_STRING(str VARCHAR(255), delim VARCHAR(12), pos INT) RETURNS VARCHAR(255)
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(str, delim, pos),LENGTH(SUBSTRING_INDEX(str, delim, pos-1)) + 1),delim, '');
DELIMITER //
CREATE FUNCTION `CALCULATE`(str LONGTEXT) RETURNS decimal(10,4)
BEGIN
DECLARE result decimal(10,4) DEFAULT 0;
DECLARE result2 decimal(10,4) DEFAULT 1;
DECLARE i INT DEFAULT 1;
DECLARE j INT DEFAULT 1;
DECLARE c1 VARCHAR(255);
DECLARE c2 VARCHAR(255);
DECLARE x INT DEFAULT 0;
DECLARE y INT DEFAULT 0;
REPEAT
SET c1=SPLIT_STRING(str,'+',i);
IF c1='' THEN
SET x = 1;
ELSE
SET result2 = 1;
SET j = 1;
SET y = 0;
REPEAT
SET c2=SPLIT_STRING(c1,'*',j);
IF c2 ='' THEN
SET y = 1;
ELSE
SET result2 = result2 * c2;
END IF;
SET j = j + 1;
UNTIL y=1 END REPEAT;
SET result = result + result2;
END IF;
SET i = i + 1;
UNTIL x = 1 END REPEAT;
RETURN result;
END
// |
Partager