oracle手机号码检验字数_oracle根据检验规则获取正确身份证号
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根据检验规则获取正确身份证号相关推荐
- 常用的一些校验规则(手机号,身份证号等)
校验规则我们经常用到,强业务性的校验很少有通用的库可以使用,一般都是搜索之后copy一个,但搜到的方法良莠不齐,各种实现方式都有,长期累积下来代码一致性可读性会非常差. 于是自己实现了一些,主要目标是 ...
- oracle手机号码检验字数_oracle判断手机号码是否合法
oracle判断手机号码是否合法 发布时间:2020-04-06 02:28:53 来源:51CTO 阅读:1192 合法手机号码:都是11位数,并且以13.15.18开头的. create or r ...
- oracle手机号码检验字数_oracle正则表达式匹配手机特号
Oracle10g提供了在查询中使用正则表达的功能,它是通过各种支持正则表达式的函数在where子句中实现的.本文将简单的介绍oracle正则表达式常用语法,并通过一个手机特号匹配的例子演示正则表达式 ...
- oracle手机号码检验字数_oracle 检验身份证号是否正确基本方法
此前在文章中给出了函数和存储过程是如何判断身份证号是否是正确的,下面我详列下判断方法: 1.号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地 ...
- oracle 大于当天时间_oracle中时间格式时候的大于号是大于和等于的意思
redis lua 需求是在缓存最近一周内用户所有消息列表,考虑用Redis 存储:为每个存储一个独立Sorted Set,value 为消息体,Score 为MessageId,用以实现增量消息同步 ...
- 根据身份证生成规则,校验身份证
没啥说的,直接上代码,有用就拿去 HTML: <input type="text" id="card" onblur="checkCard()& ...
- 数据库SQL函数 根据身份证号/出生年月 精确计算年龄(Oracle/MySQL)
<问题> 根据身份证号统计年龄(18位) Oracle <思路> (1)Substr()函数在Oracle使用中表示被劫取的字符串表达式,截取字符串的内容. (2)To_dat ...
- oracle 导出身份证号_oracle 根据身份证号计算出生日期
1.情景展示 如何根据身份证号推算出出生日期? 2.解决方案 --根据身份证号计算出生日期 SELECT DECODE(LENGTH(ID_CARD), 18, SUBSTR(ID_CARD, 7, ...
- 检验身份证号的有效性并输出有问题的号码
摘要:一个合法的身份证号码共18位,由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9 ...
最新文章
- error LNK2001:错误解决过程
- 牛人推荐机器学习网站
- Could not parse configuration: /hibernate.cfg.xml
- java char判断相等_【Java面试考点4】java基础之运算符
- Java Spring源码研究之BeanNameUrlHandlerMapping
- 指的是什么意思_扈三娘的外号一丈青,到底指的是什么意思?
- 再议libcurl编程
- nagios常见问题
- 非正弦周期电流电路和信号的频谱
- java后台 ajax_ajax提交到java后台之后处理数据的实现
- 《算法设计与分析 第2版 屈婉玲等》第五章习题答案
- 深蓝学院机器人学中的状态估计课程
- 2017数学建模B题回顾与解题分享
- 虚拟机上WindowsXP系统下载QQ和打开https网站证书问题打不开解决
- 安装SSMS报错:0x80070643
- java事件监听学习——通过键盘方向键控制小球移动
- opengl画圆柱体、圆锥等并使用四元数旋转
- ESXI 7.0 安装教程
- 基于javaweb的平行志愿管理系统(java+springboot+mybatis+vue+mysql)
- 女人,想嫁他,就别跟他同居! (转载自网络)