表aid name
1 水泥,石灰,黄沙
2 砖头
3 水泥,石子,油漆
4 木材,玻璃,地板,窗表bid name
1 水泥
2 石灰
3 黄沙
4 砖头
5 石子
6 油漆
7 木材
8 玻璃
9 地板
10 窗
一个字段里面会有很多具体名称的,至少二三十个,这有什么办法吗?
1 水泥,石灰,黄沙
2 砖头
3 水泥,石子,油漆
4 木材,玻璃,地板,窗表bid name
1 水泥
2 石灰
3 黄沙
4 砖头
5 石子
6 油漆
7 木材
8 玻璃
9 地板
10 窗
一个字段里面会有很多具体名称的,至少二三十个,这有什么办法吗?
set @s=''
select @s=@s+Name+',' from a
set @s=left(@s,len(@s)-1)
declare @sql varchar(2000)
set @sql=replace(@s,',',''' union all select ''')
set @sql='set nocount on create table #t(id int IDENTITY(1,1),name varchar(20)) insert #t(name) select '''+@sql+''' select * from #t drop table #t'exec(@sql)
1、“,”和“,”的问题
2、有重复,如水泥
--建表
create table a(id int, name varchar(30))
go
--加数据
insert a
select
1, '水泥,石灰,黄沙'
union all
select
2, '砖头'
union all
select
3, '水泥,石子,油漆'
union all
select
4, '木材,玻璃,地板,窗'
go--测试语句
declare @s varchar(2000)
set @s=''
select @s=@s+Name+',' from a
set @s=left(@s,len(@s)-1)
declare @sql varchar(2000)
set @sql=replace(@s,',',''' union select ''')
set @sql='set nocount on create table #t(id int IDENTITY(1,1),name varchar(20)) insert #t(name) select '''+@sql+''' select * from #t drop table #t'exec(@sql)--结果
id name
----------- --------------------
1 玻璃
2 窗
3 地板
4 黄沙
5 木材
6 石灰
7 石子
8 水泥
9 油漆
10 砖头--去表
drop table a