Mysql 字符串拆分:用逗号分隔值展开行
在这个问题中,用户寻求一种解决方案来转换包含一个表的表将具有逗号分隔值的字符串列放入具有多行的新表中,并用逗号分隔值。虽然该问题声称不是现有线程的精确重复,但它具有相似之处。
要满足此要求,可以使用存储过程:
DELIMITER $$ CREATE FUNCTION strSplit(x VARCHAR(65000), delim VARCHAR(12), pos INTEGER) RETURNS VARCHAR(65000) BEGIN DECLARE output VARCHAR(65000); SET output = REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos) , LENGTH(SUBSTRING_INDEX(x, delim, pos - 1)) + 1) , delim , ''); IF output = '' THEN SET output = null; END IF; RETURN output; END $$ CREATE PROCEDURE BadTableToGoodTable() BEGIN DECLARE i INTEGER; SET i = 1; REPEAT INSERT INTO GoodTable (col1, col2) SELECT col1, strSplit(col2, ',', i) FROM BadTable WHERE strSplit(col2, ',', i) IS NOT NULL; SET i = i + 1; UNTIL ROW_COUNT() = 0 END REPEAT; END $$ DELIMITER ;
此存储过程初始化整数变量 i。它迭代 col2 列中的每个字符串值,使用 strSplit 函数提取位置 i 处的相应子字符串。提取的子字符串表示逗号分隔值之一。
该过程继续,每次迭代递增 i,直到不再有非空子字符串。这确保了所有逗号分隔值都被拆分并插入到新表中。
总而言之,此存储过程提供了一个强大的解决方案,可以将具有逗号分隔值的表转换为具有多行的表,从而使得更容易操作和分析数据。
以上是如何将 MySQL 字符串列中的逗号分隔值拆分为多行?的详细内容。更多信息请关注PHP中文网其他相关文章!