查找映射到字符串字符的数字的SUM

时间:2018-01-15 10:52:16

标签: mysql

我有一个包含2列的表,一列带有字母字符,另一列带有值。例 1 B 2 C 3 D 4 E 5 现在我想获得与包含在字符串中的字符相对应的所有数字的总和。 像BAD =(2 + 1 + 4)= 7 请建议如何在mysql(sql / procedure)

中完成此操作

1 个答案:

答案 0 :(得分:0)

您可以使用以下解决方案:

我使用以下方法设置包含字符及其数值的表:

-- create the table for char values.
CREATE TABLE charValues (
    charItem VARCHAR(1),
    charValue INT
);

-- insert the values to the table.
INSERT INTO charValues VALUES
    ('A', 1),
    ('B', 2),
    ('C', 3),
    ('D', 4),
    ('E', 5);

要获取值的每个字符的计数,可以使用以下FUNCTION(在本例中为getCharCount)。此FUNCTION是在following solution上创建的,可以在这种情况下用于获取每个字符的计数:

-- function to count the count of a character.
CREATE FUNCTION getCharCount (colValue VARCHAR(255), searchValue CHAR(1)) 
RETURNS INT DETERMINISTIC
RETURN (CHAR_LENGTH(colValue) - CHAR_LENGTH(REPLACE(colValue, searchValue, '')));

现在,您可以添加第二个FUNCTION来获取值的SUM

DELIMITER //

CREATE FUNCTION getStrSum (colValue VARCHAR(255))
RETURNS INT NO SQL
BEGIN
    DECLARE retVal INT;
    SELECT SUM(getCharCount(colValue, charItem) * charValue) INTO retVal FROM charValues;
    RETURN retVal;
END //

现在,您可以使用以下SELECT语句根据表charValues获取计算结果。这些函数可以在整个数据库中使用,如下所示:

SELECT getStrSum('BAD')  -- output: 7
SELECT getStrSum('DAD')  -- output: 9