现有两表如下:
create table tt(a varchar(20),b varchar(20))
insert into tt values('E10','a')
insert into tt values('E20','ab')create table dd(c varchar(40))
insert into dd values('ab123')  --是用tt.b加上其它我想得到结果:
 E20   ab123我现在用select tt.a,dd.c from tt left join dd on charindex(tt.b,dd.c)>0
得到 E10   ab123
     E20   ab123
不是我想要的,应该怎么写呀
真实的数据有很多这样的情况,不能挨个判断

解决方案 »

  1.   

    select tt.a,dd.c from tt inner join dd on charindex(tt.b,dd.c)>0 
      

  2.   

    insert into dd values('ab123')  --是用tt.b加上其它 
    加上的部分不会出现英文字符码?加上的部分有什么规律?
      

  3.   

     
    declare  @tt table(a varchar(20),b varchar(20)) 
    insert into @tt values('E10','a') 
    insert into @tt values('E20','ab') declare  @dd table(c varchar(40)) 
    insert into @dd values('ab123')  select  a.a,b.c from @tt a,@dd b where a.b=left(b.c,patindex('%[0-9]%',b.c)-1)/*
    a                    c                                        
    -------------------- ---------------------------------------- 
    E20                  ab123(所影响的行数为 1 行)*/
      

  4.   

    select top 1 tt.a,dd.c from tt left join dd on charindex(tt.b,dd.c)>0 order by len(b) desc
      

  5.   

    create table tt(a varchar(20),b varchar(20)) 
    insert into tt values('E10','a') 
    insert into tt values('E20','ab') create table dd(c varchar(40)) 
    insert into dd values('ab123') 
    select A,c from TT ,dd where  patindex ('%[a-z]%',replace(c,b,''))>0/*
    A                    c
    -------------------- ----------------------------------------
    E10                  ab123*/
      

  6.   

    create table tt(a varchar(20),b varchar(20)) 
    insert into tt values('E10','a') 
    insert into tt values('E20','ab') create table dd(c varchar(40)) 
    insert into dd values('ab123') 
     --是用tt.b加上其它 --我想得到结果: 
    --E20  ab123 
    select * from tt
    select * from dd select t1.a,t2.c
    from
    (select a from tt where a='E20') t1,
    (select c from dd) t2
      

  7.   


    create table tt(a varchar(20),b varchar(20)) 
    insert into tt values('E10','a') 
    insert into tt values('E20','ab') 
    insert into tt values('E20','abc') 
    insert into tt values('E20','abcd') create table dd(c varchar(40)) 
    insert into dd values('ab123') 
    insert into dd values('abcd123') 
    select A,c from TT ,dd where  patindex ('%[a-z]%',replace(c,b,''))=0/*
    A                    c
    -------------------- ----------------------------------------
    E20                  ab123
    E20                  abcd123
    */
    这样对么?
      

  8.   

    feixianxxx:呵呵,谢谢,这样不行,我想只显示 E20 abcd123
    sdhdy:谢谢,dd.c 后面不一定是数字,我只是举个例子,可能不会出现数字
    gguozhenqian:谢谢 因为表还有其他的如 E30、E40、E50……等,我不能一一判断josy:谢谢,正确答案,问题可以解决感谢大伙儿帮助,结贴