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