Tsql 循环N个表列并将连接的字符串插入到同一行中

Tsql 循环N个表列并将连接的字符串插入到同一行中,tsql,sql-server-2014,Tsql,Sql Server 2014,我有一个字符串列表,其中包含由分隔符分隔的串联值,如下所示: DECLARE @stringlist NVARCHAR(MAX) = 'company_no,emp_no,emp_name,emp_type,salary_type....' 我有一个临时表,其中包含动态数量的无名列,数据如下: ------------------------------ 001 A01 John P A 001 A05 Mary P A 我希望拆分字符串并将每个拆分的字符

我有一个字符串列表,其中包含由分隔符分隔的串联值,如下所示:

DECLARE @stringlist NVARCHAR(MAX) = 'company_no,emp_no,emp_name,emp_type,salary_type....'
我有一个临时表,其中包含动态数量的无名列,数据如下:

------------------------------
001   A01   John  P     A
001   A05   Mary  P     A
我希望拆分字符串并将每个拆分的字符串插入到一行中的每一列中,如下所示:

-----------------------------------------------
company_no emp_no emp_name emp_type salary_type
001        A01    John     P        A
001        A05    Mary     P        A

我可以将字符串拆分为多行。但是如何拆分并循环temp表中的每一列以插入这些值?

根据您的示例数据和所需结果,假设目标表中的所有列都是某种字符串类型,我建议根本不要拆分字符串。
而是从中创建动态sql insert语句:

DECLARE @Sql nvarchar(max);
SET @Sql = 'INSERT INTO <TempTableNameHere> 
            VALUES ('''+ REPLACE(@stringList, ',', ''',''') + ''');';

EXEC(@Sql);
DECLARE@Sql-nvarchar(最大值);
设置@Sql=”插入到
值('''+REPLACE(@stringList','','''','''+'');';
EXEC(@Sql);

根据示例数据和所需结果,假设目标表中的所有列都是某种字符串类型,我建议根本不要拆分字符串。
而是从中创建动态sql insert语句:

DECLARE @Sql nvarchar(max);
SET @Sql = 'INSERT INTO <TempTableNameHere> 
            VALUES ('''+ REPLACE(@stringList, ',', ''',''') + ''');';

EXEC(@Sql);
DECLARE@Sql-nvarchar(最大值);
设置@Sql=”插入到
值('''+REPLACE(@stringList','','''','''+'');';
EXEC(@Sql);

您所说的具有无名列的临时表是什么意思?列必须有名称。您的意思是
@stringlist
变量包含最终的列名吗?您所说的带有无名列的临时表是什么意思?列必须有名称。你的意思是
@stringlist
变量包含最终的列名吗?@EzequielLópezPetrucci我们有时会把事情弄复杂。这就是我如此喜欢的原因。太棒了!经过几个小时的破解,我的标题试图循环每一列和每一行。。。。真不敢相信这个解决方案会如此简单,一旦我们认为有点不同,有时你所需要的只是不同的方法。。。很乐意帮忙;-)@我们有时会把事情弄复杂。这就是我如此喜欢的原因。太棒了!经过几个小时的破解,我的标题试图循环每一列和每一行。。。。真不敢相信这个解决方案会如此简单,一旦我们认为有点不同,有时你所需要的只是不同的方法。。。很乐意帮忙;-)