首页 新闻 搜索 专区 学院

表A的数据,去除空格,插入表B。求T-SQL语句。数据格式如下:

0
悬赏园豆:100 [已解决问题] 解决于 2011-03-29 09:56

A表:                          B表:
1.大米 白面                 1.大米
2.猪肉 羊肉 牛肉         2.白面
                                 3.猪肉
                                 4.羊肉
                                 5.牛肉

假扮天使的主页 假扮天使 | 初学一级 | 园豆:30
提问于:2011-03-21 09:32
< >
分享
最佳答案
0

IF NOT OBJECT_ID('[t_DemoA]') IS NULL
DROP TABLE [t_DemoA]
GO

IF NOT OBJECT_ID('[t_DemoB]') IS NULL
DROP TABLE [t_DemoB]
GO

CREATE TABLE dbo.[t_DemoA] (
ID
int NOT NULL IDENTITY (1, 1),
Name
Nvarchar(20) NULL
)
GO

CREATE TABLE dbo.[t_DemoB] (
ID
int NOT NULL IDENTITY (1, 1),
Name
Nvarchar(20) NULL
)

--插入数据
INSERT INTO [t_DemoA] Select '大米 白面'
union all Select '猪肉 羊肉 牛肉'
GO

----select * from [t_DemoA]

/*SQL server 2005/2008,可以用nvarchar(Max)****/
Declare @tmpname Nvarchar(4000)
set @tmpname=''
select @tmpname=(@tmpname+[Name]+' ') from [t_DemoA]
--print @tmpname
Declare @tmpname2 nvarchar(20)
while(charindex(' ',@tmpname)>0)
begin
set @tmpname2=substring(@tmpname,1,charindex(' ',@tmpname)-1)
--print @tmpname2
set @tmpname=substring(@tmpname,charindex(' ',@tmpname)+1,len(@tmpname)-charindex(' ',@tmpname))
insert into [t_DemoB] select @tmpname2
end
--如果只剩最后一条
Insert into [t_DemoB] select @tmpname

select * from [T_demoB]
/*执行结果
ID Name
1 大米
2 白面
3 猪肉
4 羊肉
5 牛肉
*/

收获园豆:100
邀月 | 高人七级 |园豆:25375 | 2011-03-21 11:21
谢谢大神!
假扮天使 | 园豆:30 (初学一级) | 2011-03-29 09:56
其他回答(1)
0

或者你可以用 替换的方式," " 替换成 union all select  再拼接成Sql语句执行。

webaspx | 园豆:1973 (小虾三级) | 2011-03-21 13:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册