oracle解析身份證號碼 sql

2021-07-25 20:31:55 字數 1841 閱讀 8801

-- 建立乙個表

drop table employee ;

create table employee (

no number(4) primary key not null  ,

name varchar(60) not null ,

sn number(18)

);comment on table employee

is '員工資訊表';

comment on column employee.no

is '工號';

comment on column employee.name

is '姓名';

comment on column employee.sn

is '身份證號';

--插入資料

insert into employee (no, name, sn) values (100, '王盼東', 410482199012052339) ;

insert into employee (no, name, sn) values (101, '張三', 110226198501272116) ;

insert into employee (no, name, sn) values (102, '李四', 410050197712452649) ;

insert into employee (no, name, sn) values (103, '王五', 410110198911152468) ;

insert into employee (no, name, sn) values (104, '劉六', 110105199401051599) ;

insert into employee (no, name, sn) values (105, '趙七', 440100200012311224) ;

--搜尋並解析

select distinct

case substr(sn,1,2)

when '41'

then '河南'

when '11'

then '北京'

when '44'

then '廣東'

end 省份,     

case substr(sn,1,2)

when '41'

then case substr(sn,3,4)

when '0110'

then '漯河'

when '0482'

then '汝州'

when '0050'

then '安陽'

end

when '11'

then case substr(sn,3,4)

when '0226'

then '平谷'

when '0105'

then '朝陽'

endwhen '44'

then case substr(sn,3,4)

when '0100'

then '廣州'

when '0302'

then '鹽田'

endend 地市,

case

when substr(sn,17,1)  in ('1','3','5','7','9')

then '男'

when substr(sn,17,1)  in ('0','2','4','6','8')

then '女'

end 性別,

name  "姓名",to_date(substr(sn,7,8),'yyyy/mm/dd') "出生日期"

from employee where no = (&no);    

身份證號碼

每乙個人自出生後都會有乙個身份證號碼。根據我國有關部門規定,公民身份號碼是特徵組合碼,由十七位數字本體碼和一位數字校驗碼組成。排列順序從左至右依次為 六位數字位址碼,八位數字出生日期碼,三位數字順序碼和一位數字校驗碼。居民身份證是國家法定的證明公民個人身份的有效證件。例如 對於身份證號碼330719...

Oracle 身份證號碼校驗

今天來了身份證校驗的需求,想在oracle中校驗後將錯誤資料查詢出來。於是我在網上查到了身份證校驗的oracle函式。但是發現一些正確的身份證號也未校驗通過!後來經過千辛萬苦的努力終於發現了,網上給的函式中判斷是否是閏年的 substrb 函式應該從第7為開始擷取,而不是第6位!還有要注意最後一位校...

身份證號碼驗證

說明 驗證身份證的有效性 引數 cid 身份證號碼 返回 地方 出生時間 性別 private string checkcidinfo string cid if cid.length 18 char c cid cid.length 1 bool last false if c 0 c 9 c a...