求一行拆分为多行的SQL语句
现有表名为aaa
地区 内容
----------------
中国 021sp.html|管材|4355;028sp.html|建筑材料|3209
中国 023sp.html|材|4356;025sp.html|建|9209
需实现效果:
地区 内容
----------------
中国 021sp.html|管材|4355
中国 028sp.html|建筑材料|3209
中国 023sp.html|材|4356
中国 025sp.html|建|9209
请赐教,谢谢。
[解决办法]
if object_id('[aaa]') is not null drop table [aaa]gocreate table [aaa]([地区] varchar(4),[内容] varchar(45))insert [aaa]select '中国','021sp.html|管材|4355;028sp.html|建筑材料|3209' union allselect '中国','023sp.html|材|4356;025sp.html|建|9209'goselect a.地区, 内容=substring(a.内容,b.number,charindex(';',a.内容+';',b.number)-b.number)from [aaa] ajoin master..spt_values b on b.type='P'where charindex(';',';'+a.内容,b.number)=b.number/**地区 内容---- ---------------------------------------------中国 021sp.html|管材|4355中国 028sp.html|建筑材料|3209中国 023sp.html|材|4356中国 025sp.html|建|9209(4 行受影响)**/
[解决办法]
-->根据树哥的换个条件if object_id('[aaa]') is not null drop table [aaa]gocreate table [aaa]([地区] varchar(4),[内容] varchar(45))insert [aaa]select '中国','021sp.html|管材|4355;028sp.html|建筑材料|3209' union allselect '中国','023sp.html|材|4356;025sp.html|建|9209'go-->开始查询select a.地区, 内容=substring(a.内容,b.number,charindex(';',a.内容+';',b.number)-b.number)from [tb] ajoin master..spt_values b on b.type='P'where substring(';'+a.内容,b.number,1)=';'-->测试结果---- --------------------------/*地区 内容中国 021sp.html|管材|4355中国 028sp.html|建筑材料|3209中国 023sp.html|材|4356中国 025sp.html|建|9209*/
[解决办法]