Sql 列中包含“,”的重复行&引用;
我有如下数据Sql 列中包含“,”的重复行&引用;,sql,sql-server,string,csv,unnest,Sql,Sql Server,String,Csv,Unnest,我有如下数据 name subject a m1 b m2 c m1, m3 d m4, m5, m6 e m7 我想复制列subject包含,的整行内容。原始数据的列数比此处显示的要多。我将在主题列中复制一行,行数等于,,因此我将重复c1次和d2次 我不知道subject列中有多少个单元格会有,,而且subject列的单元格中的值数量没有上限 然后,我希望在复制的行上只保留一个值,以便来自subject列的所有值都显示一次 n
name subject
a m1
b m2
c m1, m3
d m4, m5, m6
e m7
我想复制列subject
包含,
的整行内容。原始数据的列数比此处显示的要多。我将在主题
列中复制一行,行数等于,
,因此我将重复c
1次和d
2次
我不知道subject
列中有多少个单元格会有,
,而且subject
列的单元格中的值数量没有上限
然后,我希望在复制的行上只保留一个值,以便来自subject列的所有值都显示一次
name subject
a m1
b m2
c m1
c m3
d m4
d m5
d m6
e m7
如果您运行的是SQL Server 2016或更高版本,则可以使用:
string\u split()?它将如何确保我们正确地重复其余的列?@user2543622:那是。如果您想从原始表中获得更多列,只需在select
子句中列出它们。我可以说select t.*,将值设置为subject1
,然后删除subject
?@user2543622:在SQL Server中,您不能从结果集中“删除”列。您可以执行选择t.*,将值设置为subject1
,然后在结果集中同时获得suject
和subject1
。否则,您需要在select
子句中列出所有列名(除了subject
)。
select t.name, value as subject
from mytable t
cross apply string_split(subject, ', ')