HEX2DEC 스토리지 프로세스 구현
5487 단어 GBase8s저장 프로세스HEX2DEC16진수 - 10진수
drop function if exists hex2dec;
create function hex2dec(p_str varchar(18))
returns bigint as hex2dec with (not variant);
define tmpstr varchar(18);
define v_dec bigint;
define i smallint;
let v_dec = 0;
if p_str is null or length(p_str) = 0 then
return 0;
end if;
let tmpstr = reverse(ltrim(ltrim(lower(p_str),"0x"),"0"));
for i = 1 to length(tmpstr)
let v_dec = v_dec + decode(substr(tmpstr,i,1),"a",10,"b",11,"c",12,"d",13,"e",14,"f",15,substr(tmpstr,i,1)::int) * pow(16,i-1);
end for;
return v_dec;
end function;
기능 및 결함: 0x0에서 0x7fffffffffffffff 사이의 16진수를 10진수로 변환하고 초과하면 오류를 보고합니다.2, 16진수 유효 문자 비트가 14비트를 초과하면 계산에서 정밀도를 잃을 수 있습니다.3, 0x 접두어를 입력하거나 포함하지 않을 수 있습니다.