首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

sql怎么将一条内容包含空格的记录拆分成多条记录

2013-12-28 
sql如何将一条内容包含空格的记录拆分成多条记录各位大侠,请帮忙!我有一表单:IDCODE1CODE21AAAA BB CC我如

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]+'
[解决办法]
',b.col2b)+1
    from [数据库] a join T b on a.编号=b.编号 
    where charindex('
[解决办法]
',[字段1]+'
[解决办法]
',b.col1b)>0
          or charindex('
[解决办法]
',[字段2]+'
[解决办法]
',b.col2b)>0
)
select 
a.编号,[字段1]=substring(a.[字段1]+'
[解决办法]
',b.col1a,b.col1b - b.col1a - 1),
[字段2]=substring(a.[字段2]+'
[解决办法]
',b.col2a,b.col2b - b.col2a - 1) into #test
 from [数据库] a join T b on a.编号=b.编号 
 order by 1
 

declare @str varchar(2000)
set @str=''
select 
     @str=@str+','+[字段1]+'=max(case when [字段1]='
     +quotename([字段1],'''')+' then [字段2] else 0 end)'
from 
     #test
group by 
      [字段1]     
exec('select 编号'+@str+' from #test group by 编号')
/*
编号AABBCC
-------------------------
1888999666
2111222333
3444555666
*/

--一个类似的例子

热点排行