首页 > 数据库 > mysql教程 > 如何将 MySQL 字符串列中的逗号分隔值拆分为多行?

如何将 MySQL 字符串列中的逗号分隔值拆分为多行?

Patricia Arquette
发布: 2024-11-30 09:29:14
原创
790 人浏览过

How Can I Split Comma-Separated Values in a MySQL String Column into Multiple Rows?

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板