개요
MySQL에서 BOOLEAN 타입은 내부적으로 TINYINT(1)로 처리됩니다. 그렇기 때문에 데이터를 조회하면 true는 1, false는 0으로 출력됩니다. 이 글에서는 부울 값으로 저장된 성별(Gender) 데이터를 'MALE', 'FEMALE'과 같은 문자열로 변환하여 추출하는 방법을 단계별로 살펴보겠습니다.
1. 테이블 생성하기
먼저 Gender 컬럼을 BOOLEAN 타입으로 가지는 테이블을 생성합니다.
mysql> create table DemoTable815(Gender BOOLEAN);
Query OK, 0 rows affected (0.84 sec)
2. 데이터 삽입하기
INSERT 명령어를 사용해 샘플 데이터를 입력합니다.
mysql> insert into DemoTable815 values(true);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable815 values(false);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable815 values(false);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable815 values(true);
Query OK, 1 row affected (0.16 sec)
3. 저장된 데이터 확인하기
SELECT 문으로 전체 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable815;
실행 결과는 다음과 같습니다. 부울 값이 숫자 0과 1로 표시되는 것을 확인할 수 있습니다.
+--------+
| Gender |
+--------+
| 1 |
| 0 |
| 0 |
| 1 |
+--------+
4 rows in set (0.00 sec)
4. IF() 함수로 문자열 변환하기
부울 값으로 저장된 성별 데이터를 문자열로 추출하려면 IF() 함수를 사용하면 됩니다. 조건이 참이면 첫 번째 값('MALE'), 거짓이면 두 번째 값('FEMALE')을 반환합니다.
mysql> select if(Gender=true,'MALE','FEMALE') AS String from DemoTable815;
실행 결과, 숫자였던 값이 의미 있는 문자열로 깔끔하게 변환된 것을 볼 수 있습니다.
+--------+
| String |
+--------+
| MALE |
| FEMALE |
| FEMALE |
| MALE |
+--------+
4 rows in set (0.00 sec)
추가 방법: CASE 표현식 활용하기
IF() 함수 외에도 CASE 표현식을 사용하면 동일한 결과를 얻을 수 있으며, 조건이 더 많아질 때는 CASE가 더 유연하고 가독성이 좋습니다.
mysql> SELECT CASE WHEN Gender = TRUE THEN 'MALE' ELSE 'FEMALE' END AS String
-> FROM DemoTable815;
정리
MySQL의 BOOLEAN은 실제로 TINYINT(1)이기 때문에 조회 시 0과 1로 표시됩니다. 이를 사람이 읽기 쉬운 형태로 바꾸려면 IF() 함수나 CASE 표현식을 활용해 'MALE', 'FEMALE' 같은 문자열로 변환하면 됩니다. 두 방법 모두 성능 차이는 거의 없으므로, 상황과 코드 가독성에 맞게 선택하시면 됩니다.