반응형
Oracle: Oracle SQL에서 16진수를 10진수로 변환하려면 어떻게 해야 합니까?
Oracle SQL을 사용하여 16진수를 10진수로 변환하거나 다시 변환하려면 어떻게 해야 합니까?
8.1.5 이상을 사용하는 경우 다음을 사용할 수 있습니다.
16진수에서 10진수로 변환하는 방법
select to_number('AA', 'xx') from dual;
10진수에서 16진수로 변환하는 방법
select to_char(111, 'xxxx') from dual;
SELECT TO_NUMBER('DEADBEEF', 'XXXXXXXX')
FROM dual
---
3735928559
SELECT TO_CHAR(3735928559, 'XXXXXXXX')
FROM dual
---
DEADBEEF
Oracle 8i부터 TO_CHAR 및 TO_NUMBER 함수는 기본 10(십진수)에서 기본 16(16진수)으로 변환한 후 다시 변환할 수 있습니다.
SQL> select to_char(123,'XX') to_hex,
2 to_number('7B','XX') from_hex
3 from dual
4 /
TO_ FROM_HEX
------ -----------------
7B 123
FTA: Oracle에서 소수:
CREATE OR REPLACE FUNCTION hex2dec (hexnum IN CHAR) RETURN NUMBER IS
i NUMBER;
digits NUMBER;
result NUMBER := 0;
current_digit CHAR(1);
current_digit_dec NUMBER;
BEGIN
digits := LENGTH(hexnum);
FOR i IN 1..digits LOOP
current_digit := SUBSTR(hexnum, i, 1);
IF current_digit IN ('A','B','C','D','E','F') THEN
current_digit_dec := ASCII(current_digit) - ASCII('A') + 10;
ELSE
current_digit_dec := TO_NUMBER(current_digit);
END IF;
result := (result * 16) + current_digit_dec;
END LOOP;
RETURN result;
END hex2dec;
/
show errors
CREATE OR REPLACE FUNCTION num2hex (N IN NUMBER) RETURN VARCHAR2 IS
H VARCHAR2(64) :='';
N2 INTEGER := N;
BEGIN
LOOP
SELECT RAWTOHEX(CHR(N2))||H
INTO H
FROM dual;
N2 := TRUNC(N2 / 256);
EXIT WHEN N2=0;
END LOOP;
RETURN H;
END num2hex;
/
show errors
to_number 및 to_char의 'X' 옵션은 오랫동안 사용할 수 있었지만 Oracle 설명서에는 아직 나타나지 않습니다.
16진수로 변환하거나 16진수에서 16진수로 변환하는 것 외에도 이진수 또는 8진수로 변환하는 것이 바람직할 수 있습니다.Oracle은 제가 알고 있는 것에 대해 아무것도 제공하지 않습니다.
Oracle에서 binary로/binary로 변환하는 내장 메서드를 아직 추가하지 않았는지 검색하는 동안 이 스레드를 찾았지만 여전히 사용할 수 없는 것 같습니다.
오래 전에 저는 다양한 포맷을 변환하는 데 사용할 수 있는 PL/SQL 패키지 'Radix'를 작성했습니다.
다음 데모 SQL:
select radix.to_hex(285) from dual;
select radix.to_dec('11D', 16) from dual;
select radix.to_bin(255) from dual;
select radix.to_bin(256) from dual;
다음과 같은 결과를 얻었습니다.
RADIX.TO_HEX(285)
----------------------------------------
11D
RADIX.TO_DEC('11D',16)
----------------------
285
RADIX.TO_BIN(255)
----------------------------------------
11111111
RADIX.TO_BIN(256)
----------------------------------------
100000000
코드는 오픈 소스(MIT 라이센스)이며, 관심이 있는 경우 여기에서 사용할 수 있습니다.
언급URL : https://stackoverflow.com/questions/1227039/oracle-how-do-i-convert-hex-to-decimal-in-oracle-sql
반응형
'programing' 카테고리의 다른 글
파이썬은 바이너리 파일에 어떻게 쓰나요? (0) | 2023.06.22 |
---|---|
데이터 테이블을 Excel 파일로 내보내기 (0) | 2023.06.17 |
calloc(4, 6)는 calloc(6, 4)와 동일합니까? (0) | 2023.06.17 |
CFNetwork SSL 핸드셰이크 실패 iOS 9 (0) | 2023.06.17 |
Wordpress 다중 사이트 설치에 로드 밸런서 추가 (0) | 2023.06.17 |