[导入]Oracle常用函数:IDCARD15TO18() 身份证15位转18位函数
2008-12-14 09:58
561 查看
Create Or Replace Function IDCARD15TO18(CARD Varchar2) Return Varchar2 Is
Type TIARRAY Is Table Of Integer;
Type TCARRAY Is Table Of Char(1);
RESULTS Varchar2(18);
W TIARRAY; --数字数组
A TCARRAY; --字符数组
S Integer;
Begin
If CARD Is Null Then
Return '';
End If;
If LENGTH(CARD) <> 15 Then
Return CARD;
End If;
W := TIARRAY(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1);
A := TCARRAY('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
RESULTS := SUBSTR(CARD, 1, 6) || '19' || SUBSTR(CARD, 7, 9);
S := 0;
Begin
For I In 1 .. 17 Loop
S := S + To_Number(SUBSTR(RESULTS, I, 1)) * W(I);
End Loop;
Exception
When Others Then
Return '';
End;
S := S Mod 11;
RESULTS := RESULTS || A(S + 1);
Return(RESULTS);
End IDCARD15TO18;
文章来源:http://Jorkin.Reallydo.Com/default.asp?id=557
Type TIARRAY Is Table Of Integer;
Type TCARRAY Is Table Of Char(1);
RESULTS Varchar2(18);
W TIARRAY; --数字数组
A TCARRAY; --字符数组
S Integer;
Begin
If CARD Is Null Then
Return '';
End If;
If LENGTH(CARD) <> 15 Then
Return CARD;
End If;
W := TIARRAY(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1);
A := TCARRAY('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
RESULTS := SUBSTR(CARD, 1, 6) || '19' || SUBSTR(CARD, 7, 9);
S := 0;
Begin
For I In 1 .. 17 Loop
S := S + To_Number(SUBSTR(RESULTS, I, 1)) * W(I);
End Loop;
Exception
When Others Then
Return '';
End;
S := S Mod 11;
RESULTS := RESULTS || A(S + 1);
Return(RESULTS);
End IDCARD15TO18;
文章来源:http://Jorkin.Reallydo.Com/default.asp?id=557
相关文章推荐
- Oracle常用函数:IDCARD15TO18() 身份证15位转18位函数
- 15位身份证升18位身份证的Oracle函数
- oracle 自定义身份证15位转18位 函数
- [导入]Oracle常用函数:DateDiff()
- [导入]SQLServer和Oracle的常用函数对比(转)
- 15位身份证转18位的又一种简单写法的函数
- 15位, 18位的身份证号码的验证函数.以及根据身份证取省份,生日,性别
- 将身份证从15位升级为18位的函数
- SQLServer2005 身份证函数,含验证和15位转18位
- 【叶子函数分享十四】将身份证的15位号码升级为18位
- 【转】SQL 2005身份证函数包含验证和15位转18位
- [导入]SQLServer和Oracle的常用函数对比
- vbscript和javascript版的15位, 18位的身份证号码的验证函数.以及根据身份证取省份,生日,性别
- 将身份证从15位升级为18位的函数
- Oracle中15位身份证转18位存储过程
- oracle 中身份证号15位升18位
- SQL 2005身份证函数包含验证和15位转18位
- 身份证号码15位升18位的自定义函数
- 将身份证号由15位转换为18位的函数
- 自己写的身份证号码15位升18位的函数