在审计数据分析实践中,审计人员常遇到诸多的编码数据字段,这些字段的编码往往内置了一套固有的规则,或者具备一定的规律,审计人员可以利用所了解的规则或规律,对这些字段进行分析,从而实现一定的分析目标。
身份证号码是编码数据的典型代表。众所周知,18位身份证号码包括行政区划代码(6位)、出生日期(8位)、序号(3位)和校验位(1位)组成,其中序号末位为单数的是男性,为双数的是女性,校验位由前17位经特定校验算法生成,取值范围为0-9和X。本文抛砖引玉,试以身份证号码的分析为例,给出编码数据的一些分析技巧。
分析一:
15位旧身份证号码转换为18位新身份证号码
首先将旧号码左起第6位后添加“19”生成为17位数字,然后计算校验位,下面是其校验位计算的一种方法。
(1)17位数字本体码加权求和:S=Sum(Ai*Wi),
其中,i是17位数字小数点前(右起)的第i数位,如i=1代表个位;Ai表示相应位置上的数值;Wi表示相应位置上的加权因子,且Wi=mod(2i,11);
(2)对加权和除以11求模:Y=mod(S,11);
(3)得出校验位:当Y=0或1,校验位=1-Y;当Y=2,校验位=X;其他情况下,校验位=12-Y。
据以上算法,使用SQL实现旧身份证号码的转换函数:
create function [dbo].[f_CID15to18] (@sfz char(18))
returns char(18)
as
begin
declare @osfz varchar(18)
declare @i int,@ai int,@wi int,@sum int,@mod int,@result int
set @osfz=@sfz
set @sum=0
IF len(@osfz)=15 --若为15位旧身份证号码
begin
set @osfz=substring(@osfz,1,6) + '19' + substring(@osfz,7,9)
set @i=1
while @i<=17
begin
set @ai=cast(substring(@osfz,18 - @i,1) as int)
set @wi=POWER (2, @i)% 11
set @sum=@sum + @ai * @wi
set @i=@i + 1
end
set @mod= @sum % 11
set @result=12 - @mod
中国大陆
美国
日本
韩国
新加坡
英国
德国
BVI
开曼
澳大利亚
加拿大
中国澳门
中国台湾
印度
法国
西班牙
意大利
马来西亚
泰国
荷兰
瑞士
阿联酋
沙特阿拉伯
以色列
新西兰
墨西哥
巴西
阿根廷
尼日利亚
南非
埃及
哥伦比亚
智利
秘鲁
乌拉圭
比利时
瑞典
芬兰
葡萄牙
加纳
肯尼亚
摩洛哥
斐济
萨摩亚
巴哈马
巴巴多斯
哥斯达黎加
毛里求斯
塞舌尔
百慕大
巴拿马
伯利兹
安圭拉
马绍尔
厄瓜多尔
记账报税
税务筹划
一般纳税人申请
小规模纳税人申请
进出口退税
离岸开户
商标注册
专利申请
著作权登记
公证认证
电商入驻
网站建设
VAT注册
ODI跨境投资备案
许可证办理
体系认证
企业信用
高新技术企业认定
