tab1中有一个字段c1,其数据的长度要么是1要么是4,根据这个字段查询对应的数据如果c1的长度是1,那么数据要从tab2中查询相应的数据
如果c1的长度是4,那么数据要从tab3中查询相应的数据最后的结果:c1      结果
a       张三
abcd    山东
怎么写?

解决方案 »

  1.   

    把表的结构描述清楚,tab1和其它两张表都没有关联根据什么查
      

  2.   

    tab2和tab3中都有与c1数据对应的数据,且是唯一的, 
      

  3.   

    if(len(c1)=1)
    begin
          select * from tab2 where c1=@c1
    endelsebegin
          select * from tab3 where c1=@c1
    end
      

  4.   

    case when a.l= '1' then b.x
         when a.l = '4' then c.x end
      

  5.   

    在sqlserver中有case语法,看下帮助就明白了
      

  6.   


    declare @t table( userName varchar(20))
        
        insert into @t values( 'a')
        
        insert into @t values( 'abcd')
        
        declare @t1 table(userName varchar(20) , nameDescription varchar(20))
        insert into @t1 values( 'a' , '张三')
        
        declare @t2 table(userName varchar(20) , nameDescription varchar(20))
         insert into @t2 values( 'abcd' , '山东')
         
         select a.userName , case when LEN(a.userName) = 1 then ISNULL(b.nameDescription,'') else 
         ISNULL(c.nameDescription,'') end as nameDescription  from @t a 
         left outer join @t1 b on b.userName = a.userName
         left outer join @t2 c on c.userName = a.userName
      

  7.   

    if '1'=(select 字段 from a where xx= 'xxxx') 
        select * from tab2
    else    select * from tab3