MySQL에서 16진수(Hexadecimal) 문자열을 10진수 숫자로 변환하려면 CONV() 함수를 사용하면 됩니다. CONV() 함수는 지정한 진수(base)의 값을 다른 진수로 변환해 주는 강력한 내장 함수입니다.
CONV() 함수 기본 문법
16진수를 10진수로 변환하려면 아래와 같이 세 번째 인자에 목표 진수인 10을 지정합니다.
SELECT CONV(컬럼명, 16, 10) AS 별칭 FROM 테이블명;
여기서 첫 번째 인자는 변환할 값, 두 번째 인자는 원래 진수(16), 세 번째 인자는 변환할 진수(10)를 의미합니다.
예제 테이블 생성하기
먼저 16진수 문자열을 저장할 테이블을 생성해 보겠습니다.
mysql> CREATE TABLE DemoTable -> ( -> HexString varchar(100) -> ); Query OK, 0 rows affected (0.82 sec)
샘플 데이터 삽입하기
INSERT 명령어를 사용하여 16진수 형식의 문자열 데이터를 몇 개 삽입합니다.
mysql> INSERT INTO DemoTable VALUES('A');
Query OK, 1 row affected (0.28 sec)
mysql> INSERT INTO DemoTable VALUES('F');
Query OK, 1 row affected (0.19 sec)
mysql> INSERT INTO DemoTable VALUES('B');
Query OK, 1 row affected (0.55 sec)
mysql> INSERT INTO DemoTable VALUES('ABC');
Query OK, 1 row affected (0.11 sec)저장된 데이터 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> SELECT * FROM DemoTable;
출력 결과
+-----------+ | HexString | +-----------+ | A | | F | | B | | ABC | +-----------+ 4 rows in set (0.00 sec)
16진수 문자열을 숫자로 변환하는 쿼리
이제 CONV() 함수를 사용하여 16진수 문자열을 10진수 숫자로 변환하는 실제 쿼리입니다.
mysql> SELECT CONV(HexString, 16, 10) AS Number FROM DemoTable;
출력 결과
+--------+ | Number | +--------+ | 10 | | 15 | | 11 | | 2748 | +--------+ 4 rows in set (0.00 sec)
결과 해석
변환 결과를 살펴보면 다음과 같습니다.
- 16진수 'A' → 10진수 10
- 16진수 'F' → 10진수 15
- 16진수 'B' → 10진수 11
- 16진수 'ABC' → 10진수 2748 (A×256 + B×16 + C = 10×256 + 11×16 + 12)
참고 사항
CONV() 함수는 2진수부터 36진수까지 변환을 지원합니다. 따라서 반대로 10진수를 16진수로 변환할 때도 CONV(값, 10, 16)처럼 인자의 순서만 바꾸면 됩니다. 또한 유효하지 않은 16진수 문자가 포함된 경우 MySQL은 해당 위치까지만 변환하거나 0을 반환할 수 있으므로, 입력 데이터의 유효성 검사를 함께 고려하는 것이 좋습니다.