CREATE OR REPLACE FUNCTION FN_GETIDBYCHECK(IDS VARCHAR2)

RETURN VARCHAR2

/**

20140321根据身份证号获取经过校验的身份证号

*/

AS

J VARCHAR2(100) := '7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2'; --校验时身份证号各位对应的乘数

N1 VARCHAR2(100); --返回值

M NUMBER; --身份证号各位数字

S NUMBER := 0; --求和

Y VARCHAR2(20) := 'F'; --校验位

JYM VARCHAR2(20) := '10X98765432'; --校验码

CHARNUM NUMBER := 0; --是否包含字符,默认0

BEGIN

--判断身份证号是否为空或长度不足18位

IF IDS IS NULL OR LENGTH(IDS)!= 18 THEN

RETURN '';

END IF;

--判断身份证号前17位是否包含字母

SELECT COUNT(1) INTO CHARNUM FROM DUAL WHERE REGEXP_LIKE(SUBSTR(IDS, 1, 17),'[A-Z]', 'i');

IF CHARNUM = 1 THEN

RETURN '';

END IF;

--长度为18位且全部为数字,计算校验码

--求和

FOR I IN 1..17 LOOP

SELECT REGEXP_SUBSTR(J,'[^,]+',1,I) INTO M FROM DUAL;

S := S + SUBSTR(IDS, I, 1) * M;

END LOOP;

--求余

Y := MOD(S, 11);

--拼接正确的身份证号

N1 := SUBSTR(IDS, 1, 17) || SUBSTR(JYM, Y+1, 1);

--返回

RETURN N1;

EXCEPTION

WHEN NO_DATA_FOUND THEN

RETURN '';

END;

oracle手机号码检验字数_oracle根据检验规则获取正确身份证号相关推荐

  1. 常用的一些校验规则(手机号,身份证号等)

    校验规则我们经常用到,强业务性的校验很少有通用的库可以使用,一般都是搜索之后copy一个,但搜到的方法良莠不齐,各种实现方式都有,长期累积下来代码一致性可读性会非常差. 于是自己实现了一些,主要目标是 ...

  2. oracle手机号码检验字数_oracle判断手机号码是否合法

    oracle判断手机号码是否合法 发布时间:2020-04-06 02:28:53 来源:51CTO 阅读:1192 合法手机号码:都是11位数,并且以13.15.18开头的. create or r ...

  3. oracle手机号码检验字数_oracle正则表达式匹配手机特号

    Oracle10g提供了在查询中使用正则表达的功能,它是通过各种支持正则表达式的函数在where子句中实现的.本文将简单的介绍oracle正则表达式常用语法,并通过一个手机特号匹配的例子演示正则表达式 ...

  4. oracle手机号码检验字数_oracle 检验身份证号是否正确基本方法

    此前在文章中给出了函数和存储过程是如何判断身份证号是否是正确的,下面我详列下判断方法: 1.号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地 ...

  5. oracle 大于当天时间_oracle中时间格式时候的大于号是大于和等于的意思

    redis lua 需求是在缓存最近一周内用户所有消息列表,考虑用Redis 存储:为每个存储一个独立Sorted Set,value 为消息体,Score 为MessageId,用以实现增量消息同步 ...

  6. 根据身份证生成规则,校验身份证

    没啥说的,直接上代码,有用就拿去 HTML: <input type="text" id="card" onblur="checkCard()& ...

  7. 数据库SQL函数 根据身份证号/出生年月 精确计算年龄(Oracle/MySQL)

    <问题> 根据身份证号统计年龄(18位) Oracle <思路> (1)Substr()函数在Oracle使用中表示被劫取的字符串表达式,截取字符串的内容. (2)To_dat ...

  8. oracle 导出身份证号_oracle 根据身份证号计算出生日期

    1.情景展示 如何根据身份证号推算出出生日期? 2.解决方案 --根据身份证号计算出生日期 SELECT DECODE(LENGTH(ID_CARD), 18, SUBSTR(ID_CARD, 7, ...

  9. 检验身份证号的有效性并输出有问题的号码

    摘要:一个合法的身份证号码共18位,由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9 ...

最新文章

  1. error LNK2001:错误解决过程
  2. 牛人推荐机器学习网站
  3. Could not parse configuration: /hibernate.cfg.xml
  4. java char判断相等_【Java面试考点4】java基础之运算符
  5. Java Spring源码研究之BeanNameUrlHandlerMapping
  6. 指的是什么意思_扈三娘的外号一丈青,到底指的是什么意思?
  7. 再议libcurl编程
  8. nagios常见问题
  9. 非正弦周期电流电路和信号的频谱
  10. java后台 ajax_ajax提交到java后台之后处理数据的实现
  11. 《算法设计与分析 第2版 屈婉玲等》第五章习题答案
  12. 深蓝学院机器人学中的状态估计课程
  13. 2017数学建模B题回顾与解题分享
  14. 虚拟机上WindowsXP系统下载QQ和打开https网站证书问题打不开解决
  15. 安装SSMS报错:0x80070643
  16. java事件监听学习——通过键盘方向键控制小球移动
  17. opengl画圆柱体、圆锥等并使用四元数旋转
  18. ESXI 7.0 安装教程
  19. 基于javaweb的平行志愿管理系统(java+springboot+mybatis+vue+mysql)
  20. 女人,想嫁他,就别跟他同居! (转载自网络)

热门文章

  1. 【同花顺公式编辑教程】第3章 获取数据
  2. 技术当道,联想的“边缘”突围只有争议,没有未来?
  3. 安全宝金融创新论坛:民企有胜出机会
  4. unique函数的用法
  5. Ubuntu声音突然消失,开机正常
  6. ROS学习(一)创建工作空间
  7. js 时间截取年月日
  8. 测试学习-109-测试数据批量生成(Faker框架-清晰版)
  9. iMeta | 南方医科大学刘志华揭示高盐饮食诱导突触丧失和记忆损伤
  10. MOTO V860 彩E使用心得 (ZT)