Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 결과 집합에서 숫자를 문자열로 변환하는 방법 (CASE 문 활용)

네, CASE 문을 사용하면 MySQL 결과 집합에서 숫자를 의미 있는 문자열로 손쉽게 변환할 수 있습니다. 예를 들어 불리언 값인 1과 0을 'Married(기혼)'와 'Not Married(미혼)'처럼 사람이 읽기 좋은 텍스트로 바꿀 수 있습니다.

먼저 예제에 사용할 테이블을 생성해 보겠습니다.

mysql> create table DemoTable
-> (
-> isMarried boolean
-> );
Query OK, 0 rows affected (0.76 sec)

insert 명령을 사용하여 테이블에 레코드를 삽입합니다.

mysql> insert into DemoTable values(true);
Query OK, 1 row affected (0.22 sec)

mysql> insert into DemoTable values(false);
Query OK, 1 row affected (0.21 sec)

mysql> insert into DemoTable values(false);
Query OK, 1 row affected (0.13 sec)

mysql> insert into DemoTable values(true);
Query OK, 1 row affected (0.19 sec)

select 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable;

출력 결과

+-----------+
| isMarried |
+-----------+
| 1 |
| 0 |
| 0 |
| 1 |
+-----------+
4 rows in set (0.00 sec)

boolean 타입의 값은 MySQL에서 기본적으로 1(true)과 0(false)으로 저장되고 출력됩니다. 이 상태 그대로는 사용자에게 직관적이지 않으므로, 아래와 같이 CASE 문을 활용해 숫자를 문자열로 치환할 수 있습니다.

CASE 문으로 숫자를 문자열로 변환하기

mysql> select isMarried, CASE isMarried WHEN 1 THEN 'Married' ELSE 'Not Married' END AS Status from DemoTable
-> ;

출력 결과

+-----------+-------------+
| isMarried | Status |
+-----------+-------------+
| 1 | Married |
| 0 | Not Married |
| 0 | Not Married |
| 1 | Married |
+-----------+-------------+
4 rows in set (0.00 sec)

CASE 문 동작 원리

위 쿼리의 구조를 살펴보면 다음과 같습니다.

  • CASE isMarried: 평가할 대상 컬럼을 지정합니다.
  • WHEN 1 THEN 'Married': 값이 1일 경우 'Married'라는 문자열을 반환합니다.
  • ELSE 'Not Married': 조건에 해당하지 않는 모든 경우(여기서는 0)에 'Not Married'를 반환합니다.
  • END AS Status: CASE 표현식을 종료하고 결과에 'Status'라는 별칭(alias)을 부여합니다.

이처럼 CASE 문은 원본 데이터를 변경하지 않으면서 조회 결과만 변환해 주므로, 화면 표시용 데이터를 만들 때 매우 유용합니다. 참고로 MySQL 8.0 이상에서는 같은 목적으로 IF() 함수나 IIF 스타일의 조건식도 함께 활용할 수 있습니다.