MySQL에서 ENUM('M','F') 타입으로 저장된 성별 값을 조회할 때 'M' 또는 'F' 대신 '남성(Male)' 또는 '여성(Female)'처럼 읽기 쉬운 형태로 표시하고 싶다면 IF() 함수를 활용하면 됩니다. 이번 글에서는 예제 테이블을 만들고 단계별로 변환 방법을 살펴보겠습니다.
1. ENUM 컬럼이 포함된 테이블 생성
먼저 성별 컬럼이 ENUM 타입인 테이블을 생성합니다.
mysql> create table DemoTable
(
UserId int,
UserName varchar(40),
UserGender ENUM('M','F')
);
Query OK, 0 rows affected (1.11 sec)2. 샘플 데이터 삽입
INSERT 문을 사용해 테스트용 레코드를 추가합니다.
mysql> insert into DemoTable values(1,'John','M'); Query OK, 1 row affected (0.20 sec) mysql> insert into DemoTable values(2,'Maria','F'); Query OK, 1 row affected (0.17 sec) mysql> insert into DemoTable values(3,'David','M'); Query OK, 1 row affected (0.20 sec) mysql> insert into DemoTable values(4,'Emma','F'); Query OK, 1 row affected (0.15 sec)
3. 저장된 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+--------+----------+------------+ | UserId | UserName | UserGender | +--------+----------+------------+ | 1 | John | M | | 2 | Maria | F | | 3 | David | M | | 4 | Emma | F | +--------+----------+------------+ 4 rows in set (0.00 sec)
4. IF() 함수로 '남성'/'여성' 형태로 변환하여 조회
아래 쿼리는 IF(UserGender='F','Female','Male') 조건식을 사용해 ENUM 값을 'Male' 또는 'Female'로 변환합니다. 별칭(Alias)을 지정하면 결과 컬럼명도 깔끔하게 유지할 수 있습니다.
mysql> SELECT UserId,UserName,IF(UserGender='F','Female', 'Male') AS `UserGender` from DemoTable;
실행 결과는 다음과 같습니다.
+--------+----------+------------+ | UserId | UserName | UserGender | +--------+----------+------------+ | 1 | John | Male | | 2 | Maria | Female | | 3 | David | Male | | 4 | Emma | Female | +--------+----------+------------+ 4 rows in set (0.00 sec)
참고: CASE WHEN 구문 활용하기
조건이 더 많아지거나 가독성을 높이고 싶다면 CASE WHEN 구문을 사용하는 것도 좋은 방법입니다.
SELECT UserId,
UserName,
CASE UserGender
WHEN 'M' THEN 'Male'
WHEN 'F' THEN 'Female'
ELSE 'Unknown'
END AS `UserGender`
FROM DemoTable;이처럼 MySQL에서는 IF() 또는 CASE WHEN 구문을 사용해 ENUM에 저장된 축약 코드를 의미 있는 문자열로 손쉽게 변환하여 출력할 수 있습니다.