欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

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

更新时间: 2014-01-05 02:17:35 责任编辑: Author_N1

 

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 编号')
/*
编号 AA BB CC
-------------------------
1 888 999 666
2 111 222 333
3 444 555 666
*/

--一个类似的例子
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:17:35
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/8088/
本文WWW.DOC100.NET DOC100.NET版权所有。