SQL 查询急!
现有一张关系表,两个字段A,B。假设A 中内容(a,b,c...) 然后b中是 对应字段。
A B
a a
b c
c b
d a
.......
现在有另外一张表AA希望可以通过匹配字段A返回B中内容,
问题在于
表AA中的需对应字段假设名为C 可能包含多个A字段中的内容
即
a.
a.b.
a.c.
a.d.c.
...
字段C中每个内容后都有一个点号做分隔,现在希望返回结果(通过上面给出的对应关系):
a.
a.c.
a.b.
a.a.b.
......
求语句或函数或存储过程。
------最佳解决方案--------------------/****
现有一张关系表,两个字段A,B。假设A 中内容(a,b,c...) 然后b中是 对应字段。
A B
a a
b c
c b
d a
.......
现在有另外一张表AA希望可以通过匹配字段A返回B中内容,
问题在于
表AA中的需对应字段假设名为C 可能包含多个A字段中的内容
即
a.
a.b.
a.c.
a.d.c.
...
字段C中每个内容后都有一个点号做分隔,现在希望返回结果(通过上面给出的对应关系):
a.
a.c.
a.b.
a.a.b.
......
***/
create table #AB
(c_A varchar(10),
c_B varchar(10))
insert into #AB (c_A,c_B)
values ('a','a')
insert into #AB (c_A,c_B)
values ('b','c')
insert into #AB (c_A,c_B)
values ('c','b')
insert into #AB (c_A,c_B)
values ('d','a')
create table #AA
(c_C varchar(10),
c_D varchar(10))
insert into #AA(c_C)
values('a.')
insert into #AA(c_C)
values('a.b.')
insert into #AA(c_C)
values('a.c.')
insert into #AA(c_C)
values('a.d.c.')
select * from #AB
select * from #AA
declare @c varchar(10)
select @c = ''
declare @d varchar(10)
select @d = ''
declare cur_aa cursor
for select c_C from #AA
open cur_aa
fetch cur_aa into @c
while @@fetch_status=0
begin
select @d = ''
select @d = @d + replace(b.c_B,' ','')+'.'
from #AA a,#AB b
where CHARINDEX(replace(b.c_A,' ','')+'.',a.c_C) >0
and a.c_C = @c
update #AA set c_D = @d
where c_C = @c
fetch cur_aa into @c
end
close cur_aa
deallocate cur_aa
select * from #AA