189 8069 5689

Oracle函数获取IDCARD中年龄-创新互联

  IDCARD的第一代是15位号码,第二代是18位号码,

创新互联自成立以来,一直致力于为企业提供从网站策划、网站设计、网站设计、成都网站设计、电子商务、网站推广、网站优化到为企业提供个性化软件开发等基于互联网的全面整合营销服务。公司拥有丰富的网站建设和互联网应用系统开发管理经验、成熟的应用系统解决方案、优秀的网站开发工程师团队及专业的网站设计师团队。

  新的18位IDCARD号码各位的含义:1-2位省、自治区、直辖市代码

                3-4位地级市、盟、自治州代码

                5-6位县、县级市、区代码

                7-14位出生年月日,比如19670401代表1967年4月1日

                15-17位为顺序号,其中17位男为单数,女为双数

                18位为校验码,0-9和X,由公式随机产生。

   15位IDCARD号码各位的含义: 1-2位省、自治区、直辖市代码;

                3-4位地级市、盟、自治州代码;

                5-6位县、县级市、区代码;

                7-12位出生年月日,比如670401代表1967年4月1日,这是和18位号码的第一个区别;

                13-15位为顺序号,其中15位男为单数,女为双数

                与18位***号的第二个区别:没有最后一位的验证码

从IDCARD中获取用户年龄信息,要对IDCARD合法性进行校验。

--判断是否为数字,返回True,False CREATE OR REPLACE FUNCTION DT_ISNUMBER(P_IN VARCHAR2) RETURN BOOLEAN AS   I NUMBER ; BEGIN   I := TO_NUMBER(P_IN);   RETURN TRUE; EXCEPTION   WHEN OTHERS THEN     RETURN FALSE; END; --判断是否为日期,返回True,False CREATE OR REPLACE FUNCTION DT_ISDATE(P_IN VARCHAR2) RETURN BOOLEAN AS   I DATE; BEGIN   I := TO_DATE(P_IN,'YYYYMMDD');   RETURN TRUE; EXCEPTION   WHEN OTHERS THEN     RETURN FALSE; END; --判断是否为合法的***号 CREATE OR REPLACE FUNCTION DT_ISIDCARD(P_IDCARD VARCHAR2) RETURN BOOLEAN IS   IDCARDLEN INTEGER; BEGIN   IDCARDLEN := LENGTH(P_IDCARD);   IF (IDCARDLEN = 18 AND DT_ISNUMBER(SUBSTR(P_IDCARD, 1, IDCARDLEN - 1)) AND      DT_ISDATE(SUBSTR(P_IDCARD, 7, 8)) ) OR      (IDCARDLEN = 15 AND DT_ISNUMBER(SUBSTR(P_IDCARD, 1, IDCARDLEN)) AND      DT_ISDATE('19' || SUBSTR(P_IDCARD, 7, 6)) ) THEN     RETURN TRUE;     ELSE     RETURN FALSE;   END IF; END DT_ISIDCARD; --获取***号信息的年龄并返回 CREATE OR REPLACE FUNCTION DT_GETAGE(P_IDCARD VARCHAR2) RETURN INTEGER IS IDCARDLEN INTEGER; IDCARDYEAR INTEGER; BEGIN    IDCARDLEN :=LENGTH(P_IDCARD);      IF DT_ISIDCARD(P_IDCARD) AND IDCARDLEN = 18 THEN      IDCARDYEAR := TO_NUMBER(SUBSTR(P_IDCARD,7,4));     END IF;   IF DT_ISIDCARD(P_IDCARD) AND IDCARDLEN = 15 THEN        IDCARDYEAR := TO_NUMBER('19'||SUBSTR(P_IDCARD,7,2));   END IF;   RETURN  TO_NUMBER(TO_CHAR(SYSDATE,'YYYY'))-IDCARDYEAR;        END DT_GETAGE;

 以上针对***年龄获取常用函数做个记录,方便日后直接使用或者对***中其他地址、性别做进一步解析使用

(PS:为啥shenfenzheng这三个字要当做敏感信息被过滤掉了呢)

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站栏目:Oracle函数获取IDCARD中年龄-创新互联
URL地址:http://cdxtjz.cn/article/iicco.html

其他资讯