繁体   English   中英

SQL将行内容拆分为多行

[英]SQL split row contents to multiple rows

您好,我是sql的新手,我不确定是否有可能像下面这样

我有这样的一行:

abc,xyz; bcd,ddd; qqq,eee

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

abc,xyz
bcd,ddd
qqq,eee

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

我怎样才能做到这一点?

尝试一些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
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/zh-cn/sql/t-sql/functions/string-split-transact-sql

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM