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

时间:2018-03-27 09:59:22

标签: 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

我想拆分字符串并将每个拆分字符串插入一行中的每一列,例如下面:

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

我可以将字符串拆分成多行。但是,如何拆分和循环临时表中的每一列以插入这些值?

1 个答案:

答案 0 :(得分:5)

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

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

EXEC(@Sql);