MySQL에서 CHAR() 함수가 어떤 종류의 문자열을 반환하는지 확인하려면 CHARSET() 함수를 함께 사용하면 됩니다. CHARSET() 함수는 인자로 전달된 문자열의 문자 집합(character set)을 알려주기 때문에, CHAR() 함수의 반환값을 감싸서 확인할 수 있습니다.
CHARSET() 함수로 반환 문자 집합 확인하기
다음 예제는 CHAR(85)의 결과에 대해 CHARSET() 함수를 적용한 것입니다.
mysql> Select CHARSET(CHAR(85));
+-------------------+
| CHARSET(CHAR(85)) |
+-------------------+
| binary |
+-------------------+
1 row in set (0.00 sec)
결과에서 볼 수 있듯이, CHAR() 함수는 별도의 설정 없이 사용할 경우 기본적으로 binary 문자 집합을 가진 이진 문자열을 반환합니다.
왜 binary 문자열이 반환될까?
CHAR() 함수는 각 정수 인자를 해당하는 ASCII 코드 값으로 해석하여 문자로 변환합니다. 이 과정에서 특정 문자 집합에 의존하지 않는 바이트 단위의 값이 생성되기 때문에, 기본 반환값은 이진(binary) 문자열이 됩니다.
특정 문자 집합으로 변환하기
만약 이진 문자열 대신 특정 문자 집합의 결과가 필요하다면, CONVERT() 함수를 사용해 원하는 문자 집합으로 변환할 수 있습니다.
mysql> Select CHARSET(CONVERT(CHAR(85) USING utf8mb4));
+------------------------------------------+
| CHARSET(CONVERT(CHAR(85) USING utf8mb4)) |
+------------------------------------------+
| utf8mb4 |
+------------------------------------------+
1 row in set (0.00 sec)
이처럼 CHARSET() 함수를 활용하면 CHAR() 함수의 반환값이 어떤 문자 집합인지 손쉽게 검증할 수 있으며, 필요에 따라 CONVERT()와 조합하여 원하는 형태의 문자열을 얻을 수 있습니다.