使用SQL Server将单个逗号分隔的行转换为多行

我正在尝试通过使用以下查询将单个逗号分隔的行(列)转换为多行:

SELECT 
    Split.a.value('.','VARCHAR(max)') AS String  
FROM  
    (SELECT 
         CAST ('<M>' + REPLACE(cast([csvdata] as Varchar(max)),','</M><M>') + '</M>' AS XML) AS String  
     FROM  
         tboutbound 
     WHERE 
         id = '30') AS A 
CROSS APPLY 
    String.nodes ('/M') AS Split(a);

但是我得到一个错误:

  

“ XML解析:第2行,字符36,非法名称字符”

无法更新表格并更改数据吗?

有什么建议吗?

robertjp 回答:使用SQL Server将单个逗号分隔的行转换为多行

假设(希望)数据不包含序列<![CDATA[]]>,您可以这样做:

SELECT CAST('<M><![CDATA[' + REPLACE([csvdata],',']]></M><M><![CDATA[') + ']]></M>' AS XML)
FROM t

https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=0409a8643577a8b88e326689ab6da5a7

本文链接:https://www.f2er.com/3095117.html

大家都在问