Oracle函數(shù)獲取IDCARD中年齡

   IDCARD的第一代是15位號(hào)碼,第二代是18位號(hào)碼,

創(chuàng)新互聯(lián)建站長(zhǎng)期為數(shù)千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為霸州企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站,霸州網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。

   新的18位IDCARD號(hào)碼各位的含義:1-2位省、自治區(qū)、直轄市代碼 

                                3-4位地級(jí)市、盟、自治州代碼  

                                5-6位縣、縣級(jí)市、區(qū)代碼  

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

                                15-17位為順序號(hào),其中17位男為單數(shù),女為雙數(shù)  

                                18位為校驗(yàn)碼,0-9和X,由公式隨機(jī)產(chǎn)生。

     15位IDCARD號(hào)碼各位的含義: 1-2位省、自治區(qū)、直轄市代碼;  

                               3-4位地級(jí)市、盟、自治州代碼;  

                               5-6位縣、縣級(jí)市、區(qū)代碼;   

                               7-12位出生年月日,比如670401代表1967年4月1日,這是和18位號(hào)碼的第一個(gè)區(qū)別;  

                               13-15位為順序號(hào),其中15位男為單數(shù),女為雙數(shù)

                               與18位***號(hào)的第二個(gè)區(qū)別:沒(méi)有最后一位的驗(yàn)證碼

從IDCARD中獲取用戶年齡信息,要對(duì)IDCARD合法性進(jìn)行校驗(yàn)。

--判斷是否為數(shù)字,返回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;


--判斷是否為合法的***號(hào)
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;


--獲取***號(hào)信息的年齡并返回
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;

 以上針對(duì)***年齡獲取常用函數(shù)做個(gè)記錄,方便日后直接使用或者對(duì)***中其他地址、性別做進(jìn)一步解析使用

(PS:為啥shenfenzheng這三個(gè)字要當(dāng)做敏感信息被過(guò)濾掉了呢)

分享題目:Oracle函數(shù)獲取IDCARD中年齡
文章鏈接:http://bm7419.com/article44/jdehhe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、定制網(wǎng)站、品牌網(wǎng)站制作、商城網(wǎng)站、全網(wǎng)營(yíng)銷推廣、外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都app開(kāi)發(fā)公司