我sql 2000  有个查询语句我有三个表 A,B,C我要查询A表的信息A表有a1,a2,a3 三个字段。当a1的字段长度是15位的时候,就直接查询A表的select * from a1当a1的字段长度是18位的时候,要查询B表,B表有a1对应的15位字段,就要查询两个表
当a1的字段长度是22位的时候,要查询B表,C表有a1对应的15位字段,就要查询两个表

解决方案 »

  1.   

    字段长度还是列值的长度阿? 应该不是字段长度把?难道字段长度还随时变化....
    如果是列值长度:
    select case len(a.a1) when 15 then a.a1 when 18 then b.xxx when 22 then c.xxx end as a1, ....
    from a left join b on a.a1 = b.a1 and len(a.a1) = 18
           left join c on a.a1 = c.a1 and len(a.a1) = 22
      

  2.   

    select * from A where A.len(a1) = 15
    union all
    select * from A,B where A.len(a1) = 18
    union all
    select * from A,C where A.len(a1) = 22?????????
      

  3.   

    感觉你的题目还是有点不明了。当a1的字段长度是18位的时候,要查询B表,B表有a1对应的15位字段,就要查询两个表    --上一句中的第一个a1是哪个表的a1  。当a1的字段长度是22位的时候,要查询B表,C表有a1对应的15位字段,就要查询两个表--上一句中的第一个a1是哪个表的a1 ,上一名句的两个表分别是哪两个表