SQL将逗号分隔的字符串拆分为多列

SQL将逗号分隔的字符串拆分为多列,sql,sql-server-2008,csv,Sql,Sql Server 2008,Csv,我是SQL新手,请原谅我的无知。我有一个名为“temp”的表,其中包含一个字段(称为Field1),其中有一行行长的逗号分隔字符串,因此: Temp table Field1 ABC123,1,Z,some text ABC456,1,q,some text ABC789,1,r,some text ABC111,1,y,some text 然后我有另一个表,叫做Detail,有4个标题。那么,如何将上述内容从临时表插入临时表,使其看起来像这样: Detail Table Field1

我是SQL新手,请原谅我的无知。我有一个名为“temp”的表,其中包含一个字段(称为Field1),其中有一行行长的逗号分隔字符串,因此:

Temp table
Field1
ABC123,1,Z,some text
ABC456,1,q,some text
ABC789,1,r,some text
ABC111,1,y,some text
然后我有另一个表,叫做Detail,有4个标题。那么,如何将上述内容从临时表插入临时表,使其看起来像这样:

Detail Table
Field1          Field 2    Field 3          Field 4
ABC123         1             Z                 some text
ABC456         1             q                 some text 
ABC789          1            r                  some text
ABC111         1            y                 some text 
然后,我将使用reporting services在detail表中进行报告。我需要调用函数吗?我一直在阅读,有人说XML函数更好?我的所有其他代码位都在SP中,那么如何从这里调用它

提前感谢您的帮助

问候,


Michael

您使用的数据库有很大的不同。下面是一个如何在MySQL中执行此操作的示例:

insert into detail(field1, field2, field3, field4)
    select substring_index(field1, 1),
           reverse(substring_index(reverse(substring_index(field1, 2)))),
           reverse(substring_index(reverse(substring_index(field1, 3)))),
           reverse(substring_index(reverse(substring_index(field1, 4))))
    from tempTable t

2-4字段的复杂表达式只是从列表中提取第n项的一种方式。

您没有指定RDBMS,但这个问题有多个重复项,都显示在右侧:SQL Server(and),MySQL(),等等……为什么不把它转换成.csv格式,然后用SSIS将它导入一个表中呢?它是否必须保存在一个临时表中?这个问题没有显示任何研究成果。做家庭作业很重要。告诉我们你发现了什么,为什么它不能满足你的需要。这表明你花了时间来帮助自己,这使我们不必重复显而易见的答案,而且最重要的是,这有助于你得到更具体、更相关的答案。可能的重复我不得不把它放在一个临时表中开始,因为文件来自一个遗留系统,其中一些字段有双引号,而一些没有。SQL指定数据字段中的任何值或所有值都用引号(“”)括起来,因此我首先将其导入临时表,然后清除以删除“”。