审计数据清理是计算机数据审计中重要的一环,以身份证号码为关键字进行数据清理的方法,在政策落实跟踪审计、扶贫专项资金跟踪审计、下岗失业人员小额担保贷款跟踪审计等项目中取得了较好的应用。本文以下岗失业人员小额担保贷款人员表为例,以借款人身份证号码为关键字进行数据清理。 身份证号码数据清理思路 利用身份证号码的唯一性及编码规则,审计人员通过编写计算机语句判定身份证号码的正确与否,排除错误数据达到数据清理的目的。我国15位编码第一代居民身份证已于2013年1月1日停止使用,本文不对第一代身份证号码编码规则进行分析,仅以第二代身份证号码为分析对象。第二代18位身份证号码不正确的情况主要有以下几种:身份证号码长度不是18位;第1至17位有非数字字符;第7至14位出生日期不符合逻辑;第15至17位性别有误;第18位校验码有误。 身份证号码数据清理方法 (一)生成身份证号码长度不是18位的身份证表 审计思路:身份证号码长度是18位,以长度不符合18位的身份证号码为条件,筛选生成长度不合规的身份证表。 SQL语句: select借款人身份证号码 into长度不合规身份证表 from dbo.贷款人员表 where len(借款人身份证号码)!=18 (二)生成有非数字字符的身份证表 审计思路:身份证号码第1至17位是数字字符,符合身份证号码编码规则,以身份证号码长度是18位且身份证号码第1至17位不是数字字符的身份证号码为条件,生成非数字字符的身份证表。 SQL语句: select借款人身份证号码 into非数字字符身份证表 from dbo.贷款人员表 where len(借款人身份证号码)=18 and left(借款人身份证号码,17)like'%[^0-9]%' (三)生成出生日期字符串不符合逻辑的身份证表 审计思路:如果身份证号码第7至14位出生日期是有效的date、time或datetime值,则返回1;否则返回0。以身份证号码长度是18位且出生日期返回值0为条件,生成出生日期不合规的身份证表。 SQL语句: select借款人身份证号码 into出生日期不合规身份证表 frorn dbo.贷款人员表 where len(借款人身份证号码)=18 and isdate(substring(借款人身份证号码,7,8))=0 (四)生成男性身份证表 审计思路:在农村妇女小额担保贷款审计中,按照第17位奇数为男、偶数为女的身份证号码编码原则,以18位身份证号码且第17位数字除以2取余为1为条件,生成男性身份证表。 SQL语句: select借款人身份证号码 into男性身份证表 from dbo.贷款人员表 where len(借款人身份证号码)=18 and substring(借款人身份证号码,17,1)%2=1 (五)生成校验位不合规表 身份证号码第18位校验位数字的计算方法为: 1.将前面的身份证号码17位数分别乘以不同的系数。从第1位到第17位的系数分别为:7、9、10、5、8、4、2、1、6、3、7、9、10、5、8、4、2 2.将这17位数字和系数相乘的结果相加。 3用加出来的和除以11,看余数。 4.余数只可能有0、1、2、3、4、5、6、7、8、9、10这11个数字。其分别对应的最后一位身份证的号码为1、0、X、9、8、7、6、5、4、3、2。 5.自定义创建shenfenzhenhao函数,以shenfenzhenhao函数计算出的第18位校验位数值与身份证号码第18位数值不相等为条件,生成校验位不合规表。 (六)生成不合规的身份证号码表 审计思路:将以上生成的长度不合规身份证表、非数字字符身份证表、出生日期不合规身份证表、校验位不合规表合并,如涉及农村妇女小额担保贷款类应将贷款人员男性身份证表进行合并,生成不合规的身份证号码表。 SQL语句: select* into不合规身份证表from dbo.长度不合规身份证表 union select*from dbo.出生日期不合规身份证表 union select*from dbo.非数字字符身份证表 union select*from dbo.生成校验位不合规表 union select*from dbo.男性身份证表 (七)生成合规贷款人员表 审计思路:贷款人员表与不合规身份证表通过字段借款人身份证号码进行左连接,以不合规身份证表借款人身份证号码字段是空值为筛选条件,生成合规贷款人员表。 SQL语句: select a.* into合规贷款人员表 from dbo.贷款人员表a left join dbo.不合规身份证表b on a.借款人身份证号码=b.借款人身份证号码