/*ORACLE对身份证号码处理相关的SQL汇总
身份证号码算法及应用场景:
工作实践总结,与大家分享快乐,并请高人批评指正,努力改进:
目前我国大量存在着正在有效期的15位身份证,虽然国家在推行二代身份证,但尚未发现强行要求全国人民更换未到期的15位身份证的官方声明或公告。
扯远了:),总之合法的15位身份证号码将在今后一段时间内继续存在下去。
另外,项目中往往有着大量的历史数据,我们的一个系统中15位身份证所占比重很大,因此系统必须实现对两套身份证编码的职能处理,并支持另外一种特殊证件类型:军官证/警官证。本文重点讨论15位/18位身份证的处理问题
众所周知,我们现执行的身份证号码编码由公安部具体落实编码规则,有15位/18位两种,公安部以数学语言描述的方式公开了身份证编码规则和位码含义,但具体到计算机语言实现,需要开发人员自行根据算法设计。网上流传版本不少,不过繁杂而凌乱,且与应用集合描述的不多。现结合项目实践谈谈其处理和用途。
本文主要以oracle的SQL为例子,其他语言大家可以自行转换,道理都是一样的。
这里以ORACLE为例,其他数据库非常类似:*/
--1 号码转换问题
create or replace ID15TO18(p_OldID varchar2) return varchar2 istype TIArrayis table of integer;
type TCArrayis table of char(1);
Resultvarchar2(18);
W TIArray;
A T