如何将多个逗号分隔值插入到多个列中

how to insert multiple comma separated values into multiple columns

我需要一个存储过程来插入逗号分隔值,如下所示

contact_id = '1000, 1002, 1003, 1004';

first_name = 'dirt,dammy , samii ,samii ,xenon ';

使用存储过程

...

我试过了

BEGIN


 drop temporary table if exists t_srcids;
        create temporary table t_srcids(srcid char(255), names char(255));
        set @vIds = testSourceId;
        set @vNames = testSourceName;

       

       
       
        set @value = replace(@vNames,",","'),(");

        set @sql = concat("insert into t_srcids (srcid) values ('", replace(@vIds,",", "'),('"),"');");
        prepare stmt1 from @sql;
        execute stmt1;

        set @sql1 = concat("insert into t_srcids (names) values ('", replace(@vNames,",", "'),('"),"');");
        prepare stmt2 from @sql1;
        execute stmt2;

        select * from t_srcids;


END;

生成单个插入也需要帮助其他列


drop temporary table if exists t_srcids;
        create temporary table t_srcids(Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,srcid char(255));
        set @vIds = testSourceId;
        set @vNames = testSourceName;

        set @sql = concat("insert into t_srcids (srcid) values ('", replace(@vIds,",", "'),('"),"');");
        prepare stmt1 from @sql;
        execute stmt1;

        drop temporary table if exists temp_names;
        create temporary table temp_names(Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, names char(255));

        set @vNames = testSourceName;

        set @sql2 = concat("insert into temp_names (names) values ('", replace(@vNames,",", "'),('"),"');");
        prepare stmt2 from @sql2;
        execute stmt2;

        select tId.srcid,tNames.names from t_srcids tId join temp_names tNames on  tId.Id = tNames.Id;


我没有尝试同时插入相同的 table,而是使用不同的 table 和 select 它们与上面的连接。

这可以通过循环或 while 来完成,但这不是优化的解决方案。所以我推荐这个解决方案用于作为参数传递的逗号分隔值以避免循环,谢谢