以Oracle的Function为例

CREATE OR REPLACE FUNCTION Pid15to18(p_Old_Pid VARCHAR2) RETURN VARCHAR2 ISv_Result VARCHAR2(20);v_Sum    NUMBER;
BEGIN  IF Length(p_Old_Pid) = 15 THEN--检查月份合理性IF Substr(p_Old_Pid, 9, 2) = '00' OR Substr(p_Old_Pid, 9, 2) > '12' THENRETURN p_Old_Pid;END IF;--检查日合理性IF Substr(p_Old_Pid, 11, 2) = '00' OR Substr(p_Old_Pid, 11, 2) > '31' THENRETURN p_Old_Pid;END IF;--补充出生年19v_Result := Substr(p_Old_Pid, 1, 6) || '19' || Substr(p_Old_Pid, 7);--根据各位权重,计算校验位FOR i IN 1 .. 17 LOOP--7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。IF i = 1 THENv_Sum := To_Number(Substr(v_Result, i, 1)) * 7;ELSIF i = 2 THENv_Sum := v_Sum + To_Number(Substr(v_Result, i, 1)) * 9;ELSIF i = 3 THENv_Sum := v_Sum + To_Number(Substr(v_Result, i, 1)) * 10;ELSIF i = 4 THENv_Sum := v_Sum + To_Number(Substr(v_Result, i, 1)) * 5;ELSIF i = 5 THENv_Sum := v_Sum + To_Number(Substr(v_Result, i, 1)) * 8;ELSIF i = 6 THENv_Sum := v_Sum + To_Number(Substr(v_Result, i, 1)) * 4;ELSIF i = 7 THENv_Sum := v_Sum + To_Number(Substr(v_Result, i, 1)) * 2;ELSIF i = 8 THENv_Sum := v_Sum + To_Number(Substr(v_Result, i, 1)) * 1;ELSIF i = 9 THENv_Sum := v_Sum + To_Number(Substr(v_Result, i, 1)) * 6;ELSIF i = 10 THENv_Sum := v_Sum + To_Number(Substr(v_Result, i, 1)) * 3;ELSIF i = 11 THENv_Sum := v_Sum + To_Number(Substr(v_Result, i, 1)) * 7;ELSIF i = 12 THENv_Sum := v_Sum + To_Number(Substr(v_Result, i, 1)) * 9;ELSIF i = 13 THENv_Sum := v_Sum + To_Number(Substr(v_Result, i, 1)) * 10;ELSIF i = 14 THENv_Sum := v_Sum + To_Number(Substr(v_Result, i, 1)) * 5;ELSIF i = 15 THENv_Sum := v_Sum + To_Number(Substr(v_Result, i, 1)) * 8;ELSIF i = 16 THENv_Sum := v_Sum + To_Number(Substr(v_Result, i, 1)) * 4;ELSIF i = 17 THENv_Sum := v_Sum + To_Number(Substr(v_Result, i, 1)) * 2;END IF;END LOOP;v_Sum := v_Sum MOD 11;IF v_Sum = 0 THENv_Result := v_Result || '1';ELSIF v_Sum = 1 THENv_Result := v_Result || '0';ELSIF v_Sum = 2 THENv_Result := v_Result || 'X';ELSIF v_Sum = 3 THENv_Result := v_Result || '9';ELSIF v_Sum = 4 THENv_Result := v_Result || '8';ELSIF v_Sum = 5 THENv_Result := v_Result || '7';ELSIF v_Sum = 6 THENv_Result := v_Result || '6';ELSIF v_Sum = 7 THENv_Result := v_Result || '5';ELSIF v_Sum = 8 THENv_Result := v_Result || '4';ELSIF v_Sum = 9 THENv_Result := v_Result || '3';ELSIF v_Sum = 10 THENv_Result := v_Result || '2';END IF;ELSEv_Result := p_Old_Pid;END IF;RETURN(v_Result);
EXCEPTIONWHEN OTHERS THENRETURN p_Old_Pid;
END Pid15to18;

上面的函数,实现了身份证15位转18位的校验
可以用于
1. 15位转18位身份证
2. 18位身份证的校验

去掉年份的19和校验位,18位身份证就变成15位了,通过函数转回18位与原18位判断即可

大陆身份证校验——Oracle版本相关推荐

  1. sql判断邮箱是否合法_分享一个oracle身份证校验函数,判断你的身份证是否合法...

    概述 有个朋友说能不能用函数来实现对身份证的校验,所以这里用Oracle的函数来实现,其他数据库异曲同工.. 身份证校验函数 CREATE OR REPLACE FUNCTION Func_check ...

  2. Oracle 关于身份证校验规则详细说明(附有代码复制可执行)

    身份证号码组成 15位身份证号组成: 省份(2位)市(2位)区[县](2位)年(2位)月(2位)日(2位)+3位序列号 [奇数给男性/偶数给女性] 18位身份证号组成: 省份(2位)市(2位)区[县] ...

  3. 日期,手机号码正则表达式校验,身份证校验等常用工具

    日期类工具 DataUtil public class DateUtils {/*** 北京时区*/public static final ZoneOffset BJ_ZONE = ZoneOffse ...

  4. oracle 安装包校验,在windows下校验Oracle数据库安装包的完整性

    由于Oracle官网只提供了cksum的值用于校验安装包的完整性,但cksum是Unix和Linux上的命令, windows下面没有... 网上搜了一大堆,基本是建议你安装Linux或者使用cygw ...

  5. 身份证校验程序(上)- 零基础入门学习Delphi48

    身份证校验程序 让编程改变世界 Change the world by program   [caption id="attachment_2699" align="al ...

  6. ES01 数据类型、正则表达式、身份证校验

    1 基本数据类型 参见W3C的教程即可 2 正则表达式 参考博文:点击前往 3 身份证校验 参考博文:点击前往 <div class="panel panel-primary" ...

  7. 【补充一则】身份证校验的c#代码

    关于身份证号码的校验,网上的各种代码实在太多了.这里我补充一则C#的代码. 在网页上,通常是一个textbox让用户输入,然后用一个正则表达式验证控件,用这样一个正则表达式:\d{17}[\d|X]| ...

  8. oracle查看本机字符集,查看、修改oracle字符集,查看oracle版本

    查看.修改oracle字符集,查看oracle版本 1.查看数据库字符集 数据库服务器字符集select * from nls_database_parameters,其来源于props$,是表示数据 ...

  9. JAVA 身份证校验与统一社会信用代码校验

    B话少说,上代码 原理默认大家都懂了,不懂的话可以百度一下 package com.microlinktech.rns.util;import lombok.Getter; import lombok ...

最新文章

  1. 网格的铺设问题——骨牌
  2. RxJava实现事件总线——RxBus
  3. 查找有权限使用某个T-Code的所有用户列表
  4. win10 uwp 打包第三方字体到应用
  5. Maven 连接私服资源库配置
  6. Java substring() 方法
  7. 典型微型计算机控制系统的实例,微型计算机控制系统概述.ppt
  8. python交通流预测代码_使用ARIMA模型进行的短时交通流预测和结果分析
  9. 搜索宝典:搜索资料的三重境界【帮助高级篇】
  10. Windows Server 2012 R2安装体验
  11. 中的图片文字识别_文字识别 图片转文字【小程序】
  12. ps -ef|grep httpServer|grep -v grep|cut -c 9-15|xargs kill -9
  13. 【纪中集训2019.3.25】礼物
  14. mysql safe 模式_MYSQL的安全模式:sql_safe_updates介绍
  15. 显示水晶报表的公用类
  16. 轻度体验威马Living Pilot智行辅助系统:前期刺激,后期依赖
  17. python求素数代码_Python实现高效求解素数代码实例
  18. 旗袍时尚:青花瓷与青花时装
  19. 双冠家园新版腾讯QLV格式转换器,qlv格式转MP4,支持新版客户端
  20. MYSQL内存请求一直不释放_MySQL内存不释放

热门文章

  1. linux 添加微软雅黑,ubuntu安装微软雅黑和Consolas字体
  2. libgdx和android界面结合,Android游戏引擎libgdx使用教程11:Skin和UI配置文件
  3. 一加手机怎么root权限_一加手机3 root教程 一加3获取root权限的方法
  4. qcustomplot圆_QCustomplot使用分享(二) 源码解读
  5. 如何成为优秀开发人员 系列文章 - by 编程随想
  6. 机器学习之必备知识篇
  7. python语言好不好_《python编程基础》这本书怎么样
  8. 继绿联、洛克之后,紫米也被举报涉嫌虚假宣传
  9. 很高兴加入 英文_4岁娃英文词汇3000+,我是怎样做到的
  10. MessageBox ShowNumber 之类的迷案