废话不多说,直接上代码

create or replace function f_get_idcard_address(p_idcode in varchar2)
/*Create By yuxiao 2018-04-27
*/return varchar isv_area varchar2(50);
beginselect areainto v_areafrom yuxiao.idcardwhere idcode = substr(p_idcode, 1, 6);return v_area;
exceptionwhen others thenreturn null;
end f_get_idcard_address;
create or replace function f_get_idcard_birthday(p_birthday in varchar2)
/*Create By yuxiao 2018-04-27
*/return varchar is
beginreturn to_char(to_date(substr(p_birthday, 7, 8), 'yyyymmdd'),'yyyy"年"mm"月"dd"日"');
exceptionwhen others thenreturn null;
end f_get_idcard_birthday;
create or replace function f_get_idcard_sex(p_sex in varchar2)
/*Create By yuxiao 2018-04-27
*/return varchar is
beginreturn case mod(substr(p_sex, 17, 1), 2) when 1 then '男' when 0 then '女' else null end;
exceptionwhen others thenreturn null;
end f_get_idcard_sex;
create or replace function f_get_idcard_check(p_idcode in varchar2) return varchar is
/*Create By yuxiao 2018-04-27
*/type tiarray is table of integer;type tcarray is table of char(1);w    tiarray; --数字数组a    tcarray; --字符数组s    number;
beginw    := tiarray(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1);a    := tcarray('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');s    := 0;beginfor i in 1 .. 17 loops := s + to_number(substr(p_idcode, i, 1)) * w(i);end loop;exceptionwhen others thenreturn '';end;s     := s mod 11;if a(s + 1) = substr(p_idcode,-1) thenreturn 'ok';elsereturn a(s + 1);end if;
exceptionwhen others thenreturn null;
end f_get_idcard_check;
create or replace procedure prc_get_idcard_info(p_idcard in varchar2,out_str  out varchar2) is
/*Create By yuxiao 2018-04-27
*/v_address  varchar2(50);v_birthday varchar2(50);v_sex      varchar2(10);v_check    varchar2(10);v_out_str  varchar2(2000);err_cnt    number := 0;
begin--格式校验if not regexp_like(nvl(p_idcard,'1'),'^\d{17}(\d|X)$') thenv_out_str := '无效的格式!' || v_check;out_str   := out_str || v_out_str;err_cnt   := err_cnt + 1;return;end if;--归属地v_address := f_get_idcard_address(p_idcard);if v_address is null thenv_out_str := '无效证件号码! 1~6位输入有误';out_str   := out_str || v_out_str;err_cnt   := err_cnt + 1;return;end if;--出生日v_birthday := f_get_idcard_birthday(p_idcard);if v_birthday is null thenv_out_str := '无效证件号码! 7~14位(出生日期)输入有误';out_str   := out_str || v_out_str;err_cnt   := err_cnt + 1;return;end if;--性别v_sex := f_get_idcard_sex(p_idcard);if v_sex is null thenv_out_str := '无效证件号码! 第17位输入有误';out_str   := out_str || v_out_str;err_cnt   := err_cnt + 1;return;end if;--末位校验码v_check := f_get_idcard_check(p_idcard);if v_check != 'ok' thenv_out_str := '无效证件号码! 最末位应该是' || v_check;out_str   := out_str || v_out_str;err_cnt   := err_cnt + 1;return;end if;if err_cnt = 0 thenv_out_str := v_out_str || '身份证号:' || p_idcard || chr(10);v_out_str := v_out_str || '证件地址:' || v_address || chr(10);v_out_str := v_out_str || '生    日:' || v_birthday || chr(10);v_out_str := v_out_str || '性    别:' || v_sex || chr(10);out_str   := v_out_str;end if;
exceptionwhen others thenv_out_str := '无效证件号码!';out_str   := v_out_str;
end prc_get_idcard_info;

运行效果如下:

Oracle验证身份证号码有效性相关推荐

  1. sql server 验证身份证号码有效性

    有些情况下 ,数据库里的身份证号码有很多无效数据,这时候要刷选所有有效的身份证号码数据该如何做呢? 可以建一个函数,然后直接调用即可,sql如下: CREATE FUNCTION [dbo].[fun ...

  2. Js实现中国公民身份证号码有效性验证

    2019独角兽企业重金招聘Python工程师标准>>> 参考: Java实现中国公民身份证号码有效性验证 Php实现中国公民身份证号码有效性验证 本文将使用JavaScript实现中 ...

  3. 【python】身份证号码有效性校验

    1. 前言 中华人民共和国国家标准GB 11643-1999<公民身份号码>中规定:公民身份号码是特征组合码,由17位数字本体码和1位校验码组成. 18位数字组合的方式是: 其中,最后一位 ...

  4. java代码验证身份证号码经典版

    package com.haier.hmms.util; import java.text.SimpleDateFormat; import java.util.Date; /**  * 验证身份证号 ...

  5. 详细验证身份证号码规则和姓名(汉字)的java代码

    一.验证汉字的正则表达式 /** 是否是汉字的正则 */ private String regexIsHanZi = "[\\u4e00-\\u9fa5]+"; * @param ...

  6. 具体验证身份证号码规则和姓名(汉字)的java代码

    一.验证汉字的正則表達式 /** 是否是汉字的正则 */ private String regexIsHanZi = "[\\u4e00-\\u9fa5]+"; * @param ...

  7. python验证身份证号码大全_身份证号码处理技巧大全

    身份证号码处理技巧大全,汇总了常用的身份证号码处理六大技巧: 不需要复杂的公式,点点鼠标即可完成,简单快捷,下面将详细介绍六大功能的具体用法.(文章最后有工具和演示文件的下载地址,可以下载下来同步操作 ...

  8. java验证身份证号码是否有效源代码

    转载自   java验证身份证号码是否有效源代码 1.描述 用java语言判断身份证号码是否有效,地区码.出身年月.校验码等验证算法 2.源代码 package test; import java.t ...

  9. java生日验证_Java验证身份证号码是否有效

    用java代码验证身份证号码是否有效 身份证号码验证 详细代码如下: MatcherUtils.java public class MatcherUtils { /*** * 验证是不是有效的身份证号 ...

  10. JS(JavaScript)验证身份证号码格式的合法性

    一.JS(JavaScript)验证身份证号码格式的合法性,前端工程师会用到JavaScript验证身份证号码是否合法,这里分享一段本人多年以前多写的JavaScript验证输入身份证号码合法性的代码 ...

最新文章

  1. php %3c php 攻击,web 攻击靶机解题过程
  2. 看译飞的由浅入深漫谈margin属性
  3. JAVA项目中classpath路径详解
  4. B. Mashmokh and ACM
  5. 开环直流电机的机械特性_无刷直流电动机的开环调速机械特性研究
  6. c语言两点间距离_数字图像处理|P5第二章 数字图像基础第四节像素间的基本关系...
  7. 大一c语言期末课程总结,大一下学期期末自我总结
  8. 学计算机 数学日记,数学日记3篇
  9. 电源过冲怎么测试软件,【经验】以DL3000电子负载为例,3分钟学会一个电源动态响应测试技巧...
  10. 诺贝尔获奖者中村修二:东亚教育问题的根源在哪?
  11. 云更新网吧系统服务器,云更新2021最新版安装视频教程/网吧无盘系统/万能包PNP驱动...
  12. 使用Uber-go Zap日志库
  13. 第六届ACM省赛总结--吕云飞
  14. New Year Snowmen codeforces 140C
  15. 如何制作好看的菜单c语言,一种漂亮的自绘菜单
  16. APISpace 汉字转五笔API
  17. Python使用traceback.print_exc()输出异常信息
  18. t微信小程序开发-获取微信运动步数
  19. 使用dayjs快速计算 两个日期之间的天数的差值
  20. html漫画简易查看器

热门文章

  1. 算法三:判断该年该月有几天
  2. 交互设计师到底是需要做什么?
  3. 取“乐”自己,虎力全开 飞利浦×Ed Hardy联名系列限量发售
  4. 去NM的OKR,大坑,得把人逼疯!
  5. qq出示测试软件语音聊天,QQ语音时语音测试时可以听到声音,播放测试语音时听不到,也听不到好友发来的语音,请问怎么处理...
  6. 用VS2008制作主题和皮肤
  7. android 如何发送短信,如何在android中发送短信
  8. 48脚STM32内部基准电压校准ADC的一些心得记录
  9. 学弟学妹们,如果你想吃透 Java字节码的话,看这篇就好了!(超级硬核,建议收藏)
  10. 京东后台:订单履约系统设计(上)