본문으로 건너뛰기
최종 수정: 에

UNHEX

설명​

UNHEX 함수는 십육진수 문자열을 원래 문자열로 되돌리며, HEX 함수의 역연산을 수행합니다. 이 함수는 십육진수 문자(0-9, A-F, a-f) 두 개를 한 바이트로 변환합니다. UNHEX_NULL 함수도 동일한 방식으로 작동하며, 유효하지 않은 입력이 들어오면 NULL을 반환합니다. 이 함수들은 바이너리 데이터, 암호화된 데이터 또는 십육진수 표현이 필요한 데이터를 처리할 때 유용합니다.

팁

이 함수는 버전 3.0.6부터 지원됩니다.

구문​

UNHEX(<str>)

매개변수​

매개변수설명
<str>십육진수 문자열

반환 값​

십육진수에서 디코딩한 원래 문자열을 나타내는 VARCHAR 타입을 반환합니다.

디코딩 규칙:

  • 허용되는 문자 범위: 0-9, a-f, A-F
  • 십육진수 문자 두 개를 한 바이트로 변환합니다.
  • 결과에 출력할 수 없는 문자가 포함될 수 있습니다.

특수한 경우(UNHEX):

  • 입력이 NULL이면 NULL을 반환합니다.
  • 문자열 길이가 0이거나 홀수이면 빈 문자열을 반환합니다.
  • 십육진수가 아닌 문자가 포함되어 있으면 빈 문자열을 반환합니다.

특수한 경우(UNHEX_NULL):

  • 입력이 NULL이면 NULL을 반환합니다.
  • 문자열 길이가 0이거나 홀수이면 NULL을 반환합니다.
  • 십육진수가 아닌 문자가 포함되어 있으면 NULL을 반환합니다.

예제​

select unhex('@');
+------------+
| unhex('@') |
+------------+
| |
+------------+
select unhex_null('@');
+-----------------+
| unhex_null('@') |
+-----------------+
| NULL |
+-----------------+
select unhex('41');
+-------------+
| unhex('41') |
+-------------+
| A |
+-------------+
select unhex('4142'), unhex('48656C6C6F');
+---------------+----------------------+
| unhex('4142') | unhex('48656C6C6F') |
+---------------+----------------------+
| AB | Hello |
+---------------+----------------------+
  1. NULL 처리 비교
SELECT UNHEX(NULL), UNHEX_NULL(NULL);
+-------------+-----------------+
| UNHEX(NULL) | UNHEX_NULL(NULL) |
+-------------+-----------------+
| NULL | NULL |
+-------------+-----------------+
  1. UTF-8 문자 디코딩
SELECT UNHEX('E4B8AD'), UNHEX('E69687');
+-----------------+-----------------+
| UNHEX('E4B8AD') | UNHEX('E69687') |
+-----------------+-----------------+
| 中 | 文 |
+-----------------+-----------------+
  1. 십육진수 인코딩-디코딩 순환 검증
SELECT UNHEX(HEX('Hello')), UNHEX(HEX('Test123'));
+---------------------+------------------------+
| UNHEX(HEX('Hello')) | UNHEX(HEX('Test123')) |
+---------------------+------------------------+
| Hello | Test123 |
+---------------------+------------------------+

키워드​

UNHEX, UNHEX_NULL, HEX