oracle 身份证 校验位 判断字符串是否为数字函数
2014-08-27 15:32
483 查看
通过输入的前17位身份证号码获取最后一位身份证校验码的函数,输出为校验码的值。
create or replace function getCheckCode(Identity_code VARCHAR2)RETURN VARCHAR2/*****author :Mr_wu******version :1.0.0.1******function:通过输入的17位或18位数字计算最后一位验证位******param :input****** Identity_code 17位或者18位的验证位******/ASlast_code VARCHAR2(255);--返回字符串sum_num number ; --位权与相应位值的乘积的和flag NUMBER(1) ;NotEnoughLengthInput EXCEPTION ;--异常处理,输入参数是否符合要求BEGIN--判断是否是数字SELECT isnumeric(substr(Identity_code,1,17)) INTO flag FROM dual ;IF flag = 0 THENRAISE NotEnoughLengthInput ;end if ;--初始化求和变量sum_num := 0 ;--判断位长是否达到身份证的要求IF LENGTH(Identity_code) = 18 OR length(Identity_code) = 17 THENFOR i IN 1..17 LOOPsum_num := sum_num + substr(Identity_code,i,1)*mod(POWER(2,(18-i)),11) ;END LOOP ;--根据计算的和在求模运算找到对应验证码SELECT decode(MOD(sum_num,11),0,'1',1,'0',2,'X',3,'9',4,'8',5,'7',6,'6',7,'5',8,'4',9,'3',10,'2') INTO last_code FROM dual ;IF LENGTH(Identity_code) = 18 AND substr(Identity_code,18,1) <> last_code THENlast_code := last_code||',您输入的最后一位验证位不正确!' ;END IF ;ELSERAISE NotEnoughLengthInput ;END if ;RETURN '最后一位验证位为:'||last_code ;--异常捕获EXCEPTIONWHEN NotEnoughLengthInput THENlast_code := '请输入17位或18位数字进行验证!' ;RETURN last_code ;END getCheckCode ;判断输入的前17位字符串是否为数字的函数:
CREATE OR REPLACE FUNCTION isnumeric(str IN VARCHAR2)RETURN NUMBERIS------------return 0 非数字或者为空 return 1 数字-------------v_str NUMBER;BEGINIF str IS NULLTHENRETURN 0;ELSEBEGINSELECT TO_NUMBER(str)INTO v_strFROM DUAL;EXCEPTIONWHEN INVALID_NUMBERTHENRETURN 0;END;RETURN 1;END IF;END isnumeric;效果图:
相关文章推荐
- oracle中判断一个字符串是否全部为数字的函数
- oracle中判断一个字符串是否全部为数字的函数-translate
- java python oracle判断字符串是否为数字的函数
- oracle中判断一个字符串是否全部为数字的函数
- Oracle中如何判断是否为数字函数
- 使用CString 的 SpanIncluding 函数判断字符串是否全为数字
- 在delphi中判断字符串是否数字,以及精度处理函数
- 判断字符串是否包含数字得一个小函数
- 在sql 数据库中,用脚来判断字符串是否为数字的函数
- 一个高效判断字符串是否全数字的函数,请大家指正拍砖
- oracle如何判断一个字符串是否为数字或日期
- 判断字符串是否为数字函数,正则表达式【C#】
- t-sql判断一个字符串是否为bigint的函数(全角数字需要判断为不合格)
- js判断是否为中文,数字,身份证等函数
- Oracle中如何判断字符串是否全为数字
- t-sql判断一个字符串是否为bigint的函数(全角数字需要判断为不合格)
- 【转】js判断输入是否中文,数字,身份证等等js函数
- 判断字符串是否是数字的函数
- 利用JDK函数判断字符串是否数字的几种方法
- java中判断字符串是否为数字的三种方法 (Java 自带函数,RegEx,ASCII)