DIY
[@more@]Create Or Replace Function f_Ten_To_64(Fs_Value In Varchar2) Return Number Is/*******************
description: convert 10 to 64
author:yaoronghui
time :2009-09-17 13:15--20
********************/
Result Number := 0;
Ll_Value Int; --当前字符对应的64进制中的数字
Begin
--64进制 A-Z 0-25;a-z 26-51 0-9 52-61; 62 +;63 /
--如何借助ascii实现计算
For i In 1 .. Length(Fs_Value) Loop
Case
When Regexp_Like(Substr(Fs_Value, i, 1), '^[A-Z]$') Then
--范围是A-Z '[65-90]',则对应0-25
Ll_Value := Ascii(Substr(Fs_Value, i, 1)) - 65 + 0;
When Regexp_Like(Substr(Fs_Value, i, 1), '^[a-z]$') Then
--范围是a-z '[97-122]',则对应26-51
Ll_Value := Ascii(Substr(Fs_Value, i, 1)) - 97 + 26;
When Regexp_Like(Substr(Fs_Value, i, 1), '^[0-9]$') Then
--范围是0-9 '[48-57]',则对应52-61
Ll_Value := Ascii(Substr(Fs_Value, i, 1)) - 48 + 52;
When Regexp_Like(Substr(Fs_Value, i, 1), '^[+]$') Then
--范围是+,则对应62
Ll_Value := 62;
When Regexp_Like(Substr(Fs_Value, i, 1), '^[/]$') Then
--范围是+,则对应63
Ll_Value := 63;
Else
Null;
End Case;
Result := Result + Ll_Value * Power(64, Length(Fs_Value) - i);
End Loop;
Return Result;
Exception
When Others Then
Null;
End f_Ten_To_64;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/450962/viewspace-1027061/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/450962/viewspace-1027061/