MySQL에서는 IF() 함수를 활용하면 ENUM 열거형 값을 그대로 출력하는 대신, 원하는 사용자 지정 메시지로 변환하여 조회할 수 있습니다. 예를 들어 'Y'/'N'과 같은 단순한 플래그 값을 '활성 회원' 또는 '비활성 회원'처럼 의미 있는 문구로 바꿔 표시할 수 있습니다.
1. 샘플 테이블 생성
먼저 ENUM 타입의 컬럼을 포함한 테이블을 생성합니다.
mysql> create table DemoTable1992
(
ClientId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
ClientName varchar(20),
isActive ENUM('Y','N')
);
Query OK, 0 rows affected (0.89 sec)2. 데이터 삽입
INSERT 명령어를 사용해 몇 개의 레코드를 추가합니다.
mysql> insert into DemoTable1992(ClientName,isActive) values('Chris','N');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable1992(ClientName,isActive) values('Bob','N');
Query OK, 1 row affected (0.08 sec)
mysql> insert into DemoTable1992(ClientName,isActive) values('David','Y');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable1992(ClientName,isActive) values('Carol','N');
Query OK, 1 row affected (0.19 sec)3. 저장된 레코드 확인
SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select * from DemoTable1992;
위 쿼리는 다음과 같은 결과를 출력합니다.
+----------+------------+----------+ | ClientId | ClientName | isActive | +----------+------------+----------+ | 1 | Chris | N | | 2 | Bob | N | | 3 | David | Y | | 4 | Carol | N | +----------+------------+----------+ 4 rows in set (0.00 sec)
4. IF() 함수로 사용자 지정 메시지 출력하기
이제 IF() 함수를 사용해 ENUM 값에 따라 서로 다른 메시지를 반환하는 쿼리를 작성합니다. 조건식 isActive='Y'가 참이면 'Active Member'를, 거짓이면 'Not Active Member'를 결과로 반환합니다.
mysql> select ClientName,
if(isActive='Y','Active Member','Not Active Member') as Result
from DemoTable1992;실행 결과는 다음과 같습니다.
+------------+-------------------+ | ClientName | Result | +------------+-------------------+ | Chris | Not Active Member | | Bob | Not Active Member | | David | Active Member | | Carol | Not Active Member | +------------+-------------------+ 4 rows in set (0.00 sec)
추가 팁: CASE 표현식 활용하기
조건이 두 가지 이상일 경우에는 CASE 표현식을 사용하는 것이 더 유연합니다. 아래와 같이 여러 상태를 한 번에 처리할 수 있습니다.
mysql> select ClientName,
case isActive
when 'Y' then 'Active Member'
when 'N' then 'Not Active Member'
else 'Unknown'
end as Result
from DemoTable1992;이처럼 MySQL의 조건부 함수를 활용하면 저장된 원시 값은 그대로 유지하면서도, 화면에 표시되는 데이터만 사용자 친화적인 메시지로 변환할 수 있습니다. 애플리케이션 계층에서 별도로 변환 로직을 구현하지 않아도 되므로 쿼리 하나로 간편하게 처리할 수 있다는 장점이 있습니다.