日期:2014-05-18  浏览次数:20421 次

身份证问题
假如我有一本新表,表A,有姓名和身份证两个关键字段,以前有一个数据非常之多的数据库,文件名是表B,也有姓名和身份证两个关键字段,但身份证号有的是15位有的是18位,现在我想根据身份证去查表A中有但表B中没有的那些人的数据,但如下面的   江育民这种人的身份证18和15位其实都表示同一人,这种人也要剔除,那么我该怎么写这句命令
呢?
如表A   姓名         身份证号码                         表B     姓名     身份证号码
            毛德卿     35682319770830754X         陈咯       338924580209009              
            江育民     334121197007100617       毛卓兴     336723197204017717    
            郑民禄     376823193612217525       郑民禄     376823193612217525
            罗德同     312823192312287519       江育民     334121700710061
            邵德廖     357823195801137515       吴建刚     330823660401003          

------解决方案--------------------
select * from B where not exists (select 1 from A where =left(身份证号码,6)+substring(身份证号码,9,9)=B.身份证号码)