有2张表areainfo 表
结构:
areainfoid areainfo 1 北京
2 上海
3 天津
4 大连
person 表
结构:
id areainfoid
1 2,4
2 3,4
3 1,2,4
.......
我想写个视图
得到这样id areainfoid areainfo
1 2,4 上海,大连
2 3,4 天津,大连
3 1,2,4 北京,上海,大连
.......怎么实现啊????
结构:
areainfoid areainfo 1 北京
2 上海
3 天津
4 大连
person 表
结构:
id areainfoid
1 2,4
2 3,4
3 1,2,4
.......
我想写个视图
得到这样id areainfoid areainfo
1 2,4 上海,大连
2 3,4 天津,大连
3 1,2,4 北京,上海,大连
.......怎么实现啊????
returns varchar(100)
as
begin
declare @char varchar(100)
set @char=''
select @char=@char+c.areainfo from
(select a.id,a.areainfoid,b.areainfo from person a,areinfo b where charindex(b.areainfo,a.areainfo)<>0) c
where c.id=@id
return(@char)
end
goselect id,areainfoid,dbo.f_c(id) from person
insert into areainfo select 1,'北京'
insert into areainfo select 2,'上海'
insert into areainfo select 3,'天津'
insert into areainfo select 4,'大连'
create table person(id int,areainfoid varchar(20))
insert into person select 1,'2,4'
insert into person select 2,'3,4'
insert into person select 3,'1,2,4'
gocreate function f_str(@areainfoid varchar(100))
returns varchar(100)
as
begin
set @areainfoid=','+@areainfoid+','
select @areainfoid=replace(@areainfoid,','+rtrim(areainfoid)+',' ,','+areainfo+',') from areainfo
set @areainfoid=substring(@areainfoid,2,len(@areainfoid)-2)
return @areainfoid
end
gocreate view v_area
as
select id,areainfoid,areainfo=dbo.f_str(areainfoid)from person
goselect * from v_area
/*
id areainfoid areainfo
----------- -------------------- --------------------
1 2,4 上海,大连
2 3,4 天津,大连
3 1,2,4 北京,上海,大连
*/
godrop view v_area
drop function f_str
drop table areainfo,person
go