cursor-oracle身份证校验算法

问题描述

oracle身份证校验算法

大神们,用oracle写了一个身份证验证的算法,这样写运算不出来。求教该怎么改?哪边错了?
--身份证号码验证-------
declare
type TIArray is table of integer;
---type TCArray is table of varchar2(1);

cursor c is
select q.zjbh,t.dah,z.xgr from zd_qssp t inner join qlrinfo q on t.projectid=q.projectid inner join zj_xx z on t.projectid=z.prjid where t.dah is not null
and length(q.zjbh)=18 and q.zjzl='居民身份证';

tab varchar2(200);
W TIArray;
--- A TCArray;

S integer;
zuihyw varchar2(1);
jieguo number;
begin

W:=TIArray(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2);
S:=0;
for emp in c
loop
for i in 1 .. 17 loop
S:=S+ to_number(SubStr(emp.zjbh, i, 1)) * W(i);
end loop;
jieguo:=S mod 11;
case
when jieguo=0 then
zuihyw:='1';
when jieguo=1 then
zuihyw:='0';
when jieguo=2 then
zuihyw:='X';
when jieguo=3 then
zuihyw:='9';
when jieguo=4 then
zuihyw:='8';
when jieguo=5 then
zuihyw:='7';
when jieguo=6 then
zuihyw:='6';
when jieguo=7 then
zuihyw:='5';
when jieguo=8 then
zuihyw:='4';
when jieguo=9 then
zuihyw:='3';
else
zuihyw:='2';
end case;
if(zuihyw!=substr(emp.zjbh,18)) then

insert into shenfzh_info(zjbh,dah,xgr) values(emp.zjbh,emp.dah,emp.xgr);
end if;
end loop;
exception when others then null;
end;
字段说明:zuihyw : 身份证最后一位。
jieguo : mod运算值

解决方案

身份证校验

解决方案二:

身份证验证算法很多,http://www.cnblogs.com/advocate/archive/2012/01/05/2312805.html

时间: 2024-10-04 00:22:27

cursor-oracle身份证校验算法的相关文章

身份证校验算法与ASP程序_应用技巧

18位身份证校验算法  身份证校验码算法  身份证校验码产生方法: ∑(ai×Wi)(mod 11) i: 表示号码字符从由至左包括校验码在内的位置序号: ai 表示第i位置上的号码字符值: Wi 第i位置上的加权因子,其数值Wi=mod(power(2,(n-1)),11) i 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 Wi 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 1 相应的校验码: ∑(ai×WI)(mod 11

PHP身份证校验码计算方法

中国(大陆)公民身份证号码每一位所代表的意义,网上很多文章都有介绍,在此就不多说.其中身份证号码的最后一位是校验码,跟据前17位计算得到.算法大 概是这样:把前17位的每一个数字和一串加权因子相乘,再计算这些乘积的和:把这些乘积的和模11得到的数字作为序号,最后在一个校验码串中提取出与序号 相对应的字符.当然,网上也有不少的文章教大家计算这个校验码,下面我们将尝试用PHP语言来完成这一工作,也许可以用于PHP开发中,如校验用户的身份证号码是否正确. 假设某中国(大陆)公民的身份证号码前17位是这

身份证校验,检查身份证号码输入是否正确

Netkiller MySQL 手札 MySQL MariaDB... Mr. Neo Chan, 陈景峰(BG7NYT) 中国广东省深圳市龙华新区民治街道溪山美地518131+86 13113668890+86 755 29812080<netkiller@msn.com> 文档始创于2010-11-18 版权 2011, 2012, 2013 Netkiller(Neo Chan). All rights reserved. 版权声明 转载请与作者联系,转载时请务必标明文章原始出处和作者信

基于javascript简单实现对身份证校验_javascript技巧

本文实例介绍了javascript简单实现对身份证的校验的关键性代码,分享给大家供大家参考,具体内容如下 var vcity={ 11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古", 21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏", 33:&qu

校验算法,求高手破译

问题描述 校验算法,求高手破译 最近做一个项目需要破译一个校验算法,百思不得其解,求高手指点 每行5个字节,最后一个字节是前四个字节的校验,不知道这个校验是如何算出的 CC F7 77 EF 50 CC FF 77 EF 58 CC F7 B1 EF 95 CC F7 D1 EF E5 CC F7 31 EF 15 CC F7 F1 EF D5 CC F7 71 EF 55 CC F7 71 6F 95 CC F7 71 AF 15 CC F7 71 2F E5 CC F7 71 CF 65 C

求用Java实现一个数据校验算法?

问题描述 in_str="|A|B|C|"in_str_len={|A|B|C|}的长度mac_data是一个8位的校验码.具体方法如下:generat_mac_data(in_str,in_str_len,mac_data)char*in_str;intin_str_len;charmac_data[9];{inti,j,k,n,len;chartmp_str[1024],result_str[9];memset(result_str,0x00,8);len=in_str_len;k

用sql实现18位身份证校验代码分享 身份证校验位计算_MsSql

身份证校验码的计算方法 1.将前面的身份证号码17位数分别乘以不同的系数.第i位对应的数为[2^(18-i)]mod11.从第一位到第十七位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 : 2.将这17位数字和系数相乘的结果相加: 3.用加出来和除以11,看余数是多少?: 4.余数只可能有0 1 2 3 4 5 6 7 8 9 10这11个数字.其分别对应的最后一位身份证的号码为1 0 X 9 8 7 6 5 4 3 2: 复制代码 代码如下: with

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

关于身份证号码的校验,网上的各种代码实在太多了.这里我补充一则C#的代码. 在网页上,通常是一个textbox让用户输入,然后用一个正则表达式验证控件,用这样一个正则表达式:\d{17}[\d|X]|\d{15} 这样当内容通过验证以后,可以保证用户输入的文本有15位数字或者18位数字(末尾可以为X)组成. 我们可以先声明一个string数组,当然int数组也可以,用string主要是因为可以胜率string转换到int的过程.     /* 身份证的省份地区代码(身份证的前两位)    11:

用sql实现18位身份证校验代码分享 身份证校验位计算

身份证校验码的计算方法 1.将前面的身份证号码17位数分别乘以不同的系数.第i位对应的数为[2^(18-i)]mod11.从第一位到第十七位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 : 2.将这17位数字和系数相乘的结果相加: 3.用加出来和除以11,看余数是多少?: 4.余数只可能有0 1 2 3 4 5 6 7 8 9 10这11个数字.其分别对应的最后一位身份证的号码为1 0 X 9 8 7 6 5 4 3 2: 复制代码 代码如下:with t