SQL拆分行内容到多行



你好,我是SQL的新手我不确定是否可以像以下

那样可能

我有这样的行:

abc,xyz; bcd,ddd; qqq,eee

我想编写一个查询,该查询会将行分为多个行:

abc,xyz
bcd,ddd
qqq,eee

行可能包含1或2或3个名称或null,未修复。

我该怎么做?

尝试一些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://learn.microsoft.com/en-us/sql/t-sql/functions/string-split-split-transact-sql

相关内容

  • 没有找到相关文章

最新更新