SQL将行内容拆分为多行

时间:2017-11-29 18:25:17

标签: sql ssrs-2008 ssrs-2012 ssrs-2008-r2

您好我是sql和 我不确定是否可能如下

我有这样的一行:

abc,xyz; bcd,ddd; qqq,eee

我想编写一个查询,将行拆分为多行,如下所示:

abc,xyz
bcd,ddd
qqq,eee

行可能包含1个或2个或3个名称或null,它不是固定的。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

尝试一些XML节点方法,这会将逗号分隔值转换为多行

SELECT 
      LTRIM(a.value('.', 'NVARCHAR(MAX)')) [Data] FROM
(
    SELECT CAST('<M>'+REPLACE(<column>, ';', '</M><M>')+'</M>' AS XML) AS DATA from <table_name>
) A CROSS APPLY DATA.nodes('/M') as split(a)

结果:

abc,xyz
bcd,ddd
qqq,eee

答案 1 :(得分:0)

SELECT STRING_SPLIT ( fieldname, '; ')  
FROM tablename

或者您想要一个CROSS JOIN

SELECT z.field_a, z.field_b, x.VALUE
FROM tablename as z
CROSS JOIN (SELECT VALUE FROM STRING_SPLIT ( z.fieldname, '; ')) AS x

或者您想要一个CROSS APPLY

请阅读:https://docs.microsoft.com/en-us/sql/t-sql/functions/string-split-transact-sql