HEX2DEC 스토리지 프로세스 구현

데이터베이스에는 현재 10진수가 16진수로 변환된 함수 hex() 함수가 있지만 16진수가 10진수로 변환된 함수는 없으며 스스로 hex2dec()를 정의할 수 있습니다. 저장 과정은 다음과 같습니다.
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 접두어를 입력하거나 포함하지 않을 수 있습니다.

좋은 웹페이지 즐겨찾기