日期:2014-05-17  浏览次数:20566 次

sql如何将一条内容包含空格的记录拆分成多条记录
各位大侠,请帮忙!

我有一表单:

ID  CODE1  CODE2
1    AA     AA BB CC

我如何写SQL语句可以把表单变成:

ID  CODE1  CODE2
1   AA     AA
2   AA     BB
3   AA     CC

谢谢各位!

------解决方案--------------------

--> 测试数据:[数据库]
if object_id('[数据库]') is not null drop table [数据库]
create table [数据库](
[编号] int,
[字段1] varchar(8),
[字段2] varchar(11)
)
insert [数据库]
select 1,'AA
------解决方案--------------------
BB
------解决方案--------------------
CC','888
------解决方案--------------------
999
------解决方案--------------------
666' union all
select 2,'AA
------解决方案--------------------
BB
------解决方案--------------------
CC','111
------解决方案--------------------
222
------解决方案--------------------
333' union all
select 3,'AA
------解决方案--------------------
BB
------解决方案--------------------
CC','444
------解决方案--------------------
555
------解决方案--------------------
666'

with T as 
(
    select [编号],charindex('
------解决方案--------------------
','
------解决方案--------------------
'+[字段1])col1a,
    charindex('
------解决方案--------------------
',[字段1]+'
------解决方案--------------------
')+1 col1b,
    charindex('
------解决方案--------------------
','
------解决方案--------------------
'+[字段2]) col2a,
    charindex('
------解决方案--------------------
',[字段2]+'
------解决方案--------------------
')+1 col2b 
    from [数据库]
    union all
    select a.编号,b.col1b,charindex('
------解决方案--------------------
',[字段1]+'
------解决方案--------------------
',b.col1b)+1,
    b.col2b,charindex('
------解决方案--------------------
',[字段2]+'
------解决方案------