Splitting Strings in MySQL with strSplit Function
与重复线程中的问题不同,这个问题专门询问如何拆分以逗号分隔的字符串将列分成多行。为了实现这一点,MySQL 提供了一个利用 strSplit() 函数的多功能存储过程。
strSplit() 函数根据指定的分隔符 (delim) 和位置 (pos) 分解给定的字符串 (x) 。它通过从分隔字符串的 pos 位置提取子字符串,用空字符串替换分隔符,然后返回生成的子字符串来实现这一点。
为了说明这一点,让我们考虑输入表:
Col1 | Col2 |
---|---|
1 | a,b,c |
2 | d,e |
要将其转换为所需的输出:
Col1 | Col2 |
---|---|
1 | a |
1 | b |
1 | c |
2 | d |
2 | e |
我们将 BadTableToGoodTable() 存储过程定义为如下:
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 $$
这里,我们使用 REPEAT 语句循环遍历 Col2 的逗号分隔字符串中的每个字符,使用 strSplit() 提取子字符串并将其插入到新表 (GoodTable) 中。
通过遵循这些步骤,我们可以有效地拆分 MySQL 中的字符串,从而使我们能够将逗号分隔的列重塑为更规范化的数据结构。
以上是MySQL 的 strSplit 函数如何将逗号分隔的字符串转换为多行?的详细内容。更多信息请关注PHP中文网其他相关文章!