MySQL에서 HEX() 함수는 10진수 숫자 또는 문자열 값을 16진수 값으로 변환하는 함수입니다. 변환이 완료되면 MySQL은 해당 16진수 값을 문자열 형태로 반환합니다.
HEX() 함수 기본 문법
HEX(Num 또는 Str)
HEX() 함수는 숫자와 문자열 모두 변환할 수 있습니다. 위 문법에서 'Num'은 16진수로 변환할 숫자를 의미하며, 'Str'은 각 문자가 두 자리 16진수 숫자로 변환될 문자열을 의미합니다.
HEX() 함수 사용 예제
1. 숫자를 16진수로 변환하기
mysql> Select HEX(210); +----------+ | HEX(210) | +----------+ | D2 | +----------+ 1 row in set (0.00 sec)
위 예제에서 210은 10진수 숫자로, BIGINT 타입으로 처리되어 16진수 문자열 표현인 'D2'로 변환되었습니다.
2. 문자열을 16진수로 변환하기
mysql> SELECT HEX('NULL');
+-------------+
| HEX('NULL') |
+-------------+
| 4E554C4C |
+-------------+
1 row in set (0.00 sec)위 예제에서 'NULL'은 문자열이며, 각 문자(N, U, L, L)가 두 자리씩의 16진수 숫자로 변환되어 '4E554C4C'라는 결과를 얻었습니다.
HEX() 함수와 CONV() 함수의 차이점
기본적으로 MySQL의 HEX() 함수는 CONV(N,10,16)과 동일한 역할을 수행합니다. 하지만 두 함수 사이에는 중요한 차이점이 존재합니다.
- HEX(): 문자열의 각 문자를 두 자리 16진수 숫자로 변환할 수 있습니다.
- CONV(): 문자열 문자를 16진수로 변환하려고 시도하면 0을 반환합니다.
다음 예제를 통해 이 차이를 직접 확인해 보겠습니다.
비교 예제
mysql> Select HEX('N');
+----------+
| HEX('N') |
+----------+
| 4E |
+----------+
1 row in set (0.00 sec)
mysql> Select CONV('N',10,16);
+-----------------+
| CONV('N',10,16) |
+-----------------+
| 0 |
+-----------------+
1 row in set (0.00 sec)위 결과에서 볼 수 있듯이, HEX() 함수는 문자 'N'을 16진수 '4E'로 성공적으로 변환한 반면, CONV() 함수는 동일한 입력에 대해 0을 반환했습니다. 따라서 문자열 데이터를 16진수로 변환해야 하는 경우에는 반드시 HEX() 함수를 사용해야 합니다.