现有一张关系表,两个字段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.
......求语句或函数或存储过程。 

解决方案 »

  1.   

    /****
    现有一张关系表,两个字段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 #ABselect * from #AAdeclare @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_aaselect * from #AA