小弟想做一个查询,统计出身份证重复的记录(其中包括15位与18位重复,数据已经重复),关键怎么判断15位身份证和18位的,然后再用sql统计出重复的记录
小弟现在用php+oracle8 做的,怎么弄啊请各位大哥大姐帮忙啊···最好能贴出源码,实在不行说说思路也行啊···谢谢啊···

解决方案 »

  1.   

    可以把15位的全部转换成18位的SQL中虽然可以完成转换,不过不方便
      

  2.   


    如果仅用SQL,速度不会快的。可以用substrin 函数截取15位。然后group by , having count(*)>1
      

  3.   


    是的,可以在程序中处理的,就不要放在sql中执行。
      

  4.   

    3楼的可行  只靠sql会很慢
      

  5.   

    有个笨点的办法,把存储身份证的表复制多一个出来,建产索引会快一些;查询其中一个表,在循环里查另一个表,如果身份证记录有大于2的就echo出来;不然就如3楼所解!
     $sql="select * from table ";
     $rs=mysql_query($sql);
    while($row=mysql_fetch_array($rs))
    {
      $idcard=$row['idcard'];  $sql2="select * from table2 where idcard='".$idcard."'";
      $rs2=mysql_query($sql2);
      $count=mysql_num_rows($rs2);
      if($count>1)
       {
         echo "身份证重复记录:".$idcard."共".$count."条!<br>";
       }
    }