自己测试了一把,如果有纰漏之处,欢迎指正。
create or replace function f_check_id_number(p_number varchar2) return number is
type tbl_t is table of number;my_tbl tbl_t := tbl_t(7,
9,
10,
5,
8,
4,
2,
1,
6,
3,
7,
9,
10,
5,
8,
4,
2); --初始化
i number := 0;
sum_result number := 0;
sub_str number;
begin
for i in 1 .. length(p_number) - 1 loop
sub_str := substr(p_number, i, 1);
sum_result := sum_result + sub_str * my_tbl(i);
end loop;
sub_str := mod(sum_result, 11);
select decode(sub_str,
0,
1,
1,
0,
2,
'X',
3,
9,
4,
8,
5,
7,
6,
6,
7,
5,
8,
4,
9,
3,
10,
2)
into sum_result
from dual;
if substr(p_number, length(p_number), 1) <> sum_result then
return 0;
else
return 1;
end if;
end;
本文详细阐述了如何使用特定函数验证身份证号码的有效性,并通过实例演示了算法的实现过程。包括初始化表格、循环处理每个数字、计算校验位及最终判断是否符合规则。
2359

被折叠的 条评论
为什么被折叠?



