在您的情况下,该函数的输入是一个逗号分隔的字符串。但是 MySql 不包含用于拆分 COMMA SEPARATED 字符串的内置函数(逗号只是分隔符的示例)。
您提到输入为“1,3,5,7,9,0,3”。这意味着,项目的计数是 7。这个计数需要是恒定的。我可以给你举个例子,但项目的数量应该总是恒定的。
mysql 函数也只能返回一个值。因此,您必须仅从函数内部调用过程(在拆分值之后)。
我给你一个mysql函数,假设输入字符串总是包含7个项目并且使用的分隔符是逗号。否则,您必须修改该功能。
DELIMITER @@
CREATE FUNCTION getCustomerFullName(commaSeparatedString VARCHAR(256))
RETURNS INT
BEGIN
DECLARE value1 INT DEFAULT 0;
DECLARE value2 INT DEFAULT 0;
DECLARE value3 INT DEFAULT 0;
DECLARE value4 INT DEFAULT 0;
DECLARE value5 INT DEFAULT 0;
DECLARE value6 INT DEFAULT 0;
DECLARE value7 INT DEFAULT 0;
IF NOT commaSeparatedString IS NULL
THEN
SELECT LENGTH(commaSeparatedString) - LENGTH(REPLACE(commaSeparatedString, ',', '')) INTO @commaCount;
IF @commaCount = 0
THEN
RETURN 0;
ELSE
SET value1 = REPLACE(SUBSTRING(SUBSTRING_INDEX(commaSeparatedString, ',', 1),LENGTH(SUBSTRING_INDEX(commaSeparatedString, ',', 0)) + 1), ',', '');
SET value2 = REPLACE(SUBSTRING(SUBSTRING_INDEX(commaSeparatedString, ',', 2),LENGTH(SUBSTRING_INDEX(commaSeparatedString, ',', 1)) + 1), ',', '');
SET value3 = REPLACE(SUBSTRING(SUBSTRING_INDEX(commaSeparatedString, ',', 3),LENGTH(SUBSTRING_INDEX(commaSeparatedString, ',', 2)) + 1), ',', '');
SET value4 = REPLACE(SUBSTRING(SUBSTRING_INDEX(commaSeparatedString, ',', 4),LENGTH(SUBSTRING_INDEX(commaSeparatedString, ',', 3)) + 1), ',', '');
SET value5 = REPLACE(SUBSTRING(SUBSTRING_INDEX(commaSeparatedString, ',', 5),LENGTH(SUBSTRING_INDEX(commaSeparatedString, ',', 4)) + 1), ',', '');
SET value6 = REPLACE(SUBSTRING(SUBSTRING_INDEX(commaSeparatedString, ',', 6),LENGTH(SUBSTRING_INDEX(commaSeparatedString, ',', 5)) + 1), ',', '');
SET value7 = REPLACE(SUBSTRING(SUBSTRING_INDEX(commaSeparatedString, ',', 7),LENGTH(SUBSTRING_INDEX(commaSeparatedString, ',', 6)) + 1), ',', '');
END IF;
END IF;
CALL updateLastModifiedDate(value1, value2, value3, value4, value5, value6, value7);
RETURN 1;
END;
@@
DELIMITER ;
礼貌: