运用三款软件审计身份证号方法,本文主要内容关键词为:三款论文,身份证号论文,方法论文,软件论文,此文献不代表本站观点,内容供学术参考,文章仅供参考阅读下载。
在审计过程中,笔者发现身份证号在各类补贴发放过程扮演了越来越重要的角色。大部分的涉农补贴有着金额小但涉及人员多的特点,手工查证难度大、效果差、风险高。利用不同软件辅助审计,成为大部分审计人员的首选。笔者选择了三款在近几年的审计工作中常用的软件对身份证号的审计方法,和大家一起探讨一下。
对身份证号的审计不外乎以下几种:一是身份证号合规性审计,即审计身份证号位数是否为15位或18位。通过身份证号合规性审计,可以查证是否有人为编造身份证号行为。二是用身份证号构造年龄字段与身份证所有者实际年龄进行核对。可以查证身份证所有人享受各类补贴时是否符合相关年龄规定。三是用身份证尾数识别性别审计,即身份证位数为15位的最后一位数是奇数的为男性,是偶数的为女性,身份证为18位的第17位是奇数的为男性,是偶数的为女性。同样是为了进一步查证是否存在有编造身份证号行为。
一、使用EXCEL电子表格审计
(一)身份证号位数合规性的审计方法
首先对电子表格中的数据进行排序或分类(主要目的是让身份证位数为15位的或18位放在一起),然后在所要分析的位数为15位的身份证后一列中插入公式:=IF(Logical,Value if true,Val-ue_if_false),如:=IF(LEN(L2)=15,“符合要求”,“不符合要求”);在位数为18位的身份证号后插入公式:=IF(LEN(L2)=18,“符合要求”,“不符合要求”),在插入公式时,特别注意的是单元格格式。然后将显示不符合要求的全部列出分析。
(二)利用身份证号构造年龄字段与实际年龄核对的审计方法
同样在分析前,将身份证号分成15位和18位两类。
1.身份证号为15位
在所要分析的15位身份证号后一列插入公式:
=109-MID(身份证所在列坐标,起始位数,所要取出的位数),如=109-MID(L2,7,2),意为用109减去从L列第2行的身份证号码中从第7位开始,取出2位数(身份证所有者出生年份)。如身份证号码为320***550126580的公民,从第7位开始取出2位为55,用109(审计时为2009年)减55为54,即当时该身份证所有者年龄为54岁。
2.身份证号为18位
在所要分析的18位身份证号后一列插入公式:
=109-MID(身份证所在列坐标,起始位数,所要取出的位数),如=109-MID(k2,9,2),意为用109减去从k列第2行的身份证号码中从第9位开始,取出2位数(身份证所有者出生年份)。如身份证号码为320***194702285830的公民,从第9位开始取出2位为47,用109(审计时为2009年)减47为62,即当时该身份证所有者年龄为62岁。
(三)利用身份证号识别性别审计方法
1.身份证号为15位
在所要分析的身份证号后一列插入公式:
=IF(MOD(MID(列坐标,15,1),2)=0,“女”,“男”),意为如果15位身份证号的最后一位被2整除的话,该身份证所有者为女性,反之为男性。如在身份证号为320***430227581(列坐标为k列3行)后一列插入公式=IF(MOD(MID(K3,15,1),2)=0,“女”,“男”),则L3单元格显示为男。
2.身份证号为18位
在所要分析的身份证号后插入公式:
=IF(MOD(MID(列坐标,17,1),2)=0,“女”,“男”),意为如果18位身份证号的最后第二位被2整除的话,该身份证所有者为女性,反之为男性。如在身份证号为320*****3210065829(列坐标为k列11行)后一列插入公式=IF(MOD(MID(K11,17,1),2)=0,“女”,“男”),则L11单元格显示为“男”。
二、使用SQLSERVER2000进行审计
(一)身份证号位数合规性审计方法
在查询分析器中输入语句:
select*
from[表名]
where len(身份证号码)<>15 and len(身份证号码)<>18
查询出的结果为身份证号码位数既不是15位也不是18位的记录。
(二)利用身份证号构造年龄字段与实际年龄核对审计方法
在查询分析器中输入语句:
select*,case
when len(身份证号码)=15 then 109-substring(身份证号码.7,2)
when len(身份证号码)=18 then 109-substring(身份证号码,9,2) end实际年龄
from[表名]
oder by实际年龄desc
查询结果为身份证所有者的实际年龄,并按降序排列。语句中的“109”为构造数字,如果是2010审计则用“110”,以此顺延。
(三)利用身份证号识别性别审计方法
在查询分析器中输入语句:
select*,性别1,case
when len(身份证号码)=15 and substring(身份证号码,15,1)in(1,3,5,7,9)then'男'
when len(身份证号码)=18 and sub string(身份证号码,17,1)in(1,3,5,7,9)then'男'else'女'
end性别2
from表名
查询结果中性别1和性别2不符的即可作为可疑点进行延伸。
三、使用AO现场审计实施系统2008进行审计
使用现场审计实施系统对身份证号位数合规性审计方法与使用SQL使用的方法一样,因为SQL和ACCESS查询语法差异不大,主要差异在函数的使用上略有不同,如substring在ACCESS中不能使用,只能用MID函数。
(一)利用身份证号构造年龄字段与实际年龄核对的审计方法
在AO系统中,由于AO不支持CASE WHEN 语句,所以在对身份证号构造年龄字段与实际年龄核对审计查询时,为了简便起见需将身份证号为15位和18位分别进行查询:
1.身份证号位数为15位
在AO的SQL查询器中输入语句:
select*,109-mid([身份证号码],7,2)as实际年龄
from[表名]
wherelen([身份证号码])=15
2.身份证号位数为18位
在AO的SQL查询器中输入语句:
select*,109-mid([身份证号码],9,2)
as实际年龄
from[表名]
where len([身份证号码])=18
从以上可以看出,在SQL和AO中,只是使用函数不同,语法差异不大。
(二)利用身份证号识别性别审计方法
同样,在AO中利用身份证号识别性别审计方法也要区分15位和18位。
1.身份证号位数为15位
在AO的SQL查询器中输入语句:
select*,iif(mid([身份证号码],15,1)in(1,3,5,7,9),'男','女')
from[表名]
where len([身份证号码])=15
2.身份证号位数为18位
在AO的SQL查询器中输入语句:
select *,iif(mid([身份证号码],17,1)in(1,3,5,7,9),'男','女')
from[表名]
where len([身份证号码])=18
通过比较,以上三种软件的查询结果是一致的,适用于不同使用者。笔者认为,计算机作为一种审计辅助工具,只要我们做个有心人,就会发现很多解决审计实际问题的路径。