【SQL語句】將某一列的一行字符串按照指定字符拆分成多行


網絡上查詢很久,最好的也是最常見到的SQL語句是:

create table tb(id int,value varchar(30))
insert into tb values(1,'aa,bb')
insert into tb values(2,'aaa,bbb,ccc')
go

SELECT *FROM tb

 

 
         

SELECT A.id, B.value

FROM(
    SELECT id, [value] = CONVERT(xml,'<root><v>' + REPLACE([value], ',', '</v><v>') + '</v></root>') FROM tb
)A
OUTER APPLY(
    SELECT value = N.v.value('.', 'varchar(100)') FROM A.[value].nodes('/root/v') N(v)
)B
DROP TABLE tb--刪除表

試用體驗,確實非常完美;

應用在實際案例中:

    SELECT A.mainid ,B.fpdh
FROM(
    SELECT mainid,[fpdh] = CONVERT(xml,'<root><v>' + REPLACE([fpdh], '', '</v><v>') + '</v></root>') 
    FROM [ecology].[dbo].[uf_backinfo_dt1]
)A
OUTER APPLY(
    SELECT fpdh = N.v.value('.', 'varchar(100)') 
    FROM A.[fpdh].nodes('/root/v') N(v)
)B

 

 但是這個SQL語句實在是知其然不知其所以然。。。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM