網絡上查詢很久,最好的也是最常見到的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語句實在是知其然不知其所以然。。。