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

MySQL CASE 문으로 SELECT 결과에서 1을 Y로 변환하는 방법

MySQL에서 CASE 표현식을 사용하면 SELECT 쿼리 결과에 포함된 특정 값을 원하는 형태로 손쉽게 변환할 수 있습니다. 예를 들어, 불린 값(0 또는 1)으로 저장된 데이터를 조회할 때 1을 'Y'로, 0은 그대로 출력하고 싶다면 CASE 문이 유용합니다.

이번 글에서는 실제 예제를 통해 CASE 문으로 값 1을 'Y'로 변경하는 방법을 단계별로 알아보겠습니다.

1. 테이블 생성하기

먼저 예제에 사용할 테이블을 생성합니다. 아래 쿼리를 실행해 주세요.

mysql> create table changeValuefrom1toY
    -> (
    -> Id int NOT NULL AUTO_INCREMENT,
    -> isValidAddress tinyint(1),
    -> PRIMARY KEY(Id)
    -> );
Query OK, 0 rows affected (0.76 sec)

위 테이블은 자동 증가되는 Id 컬럼과, 주소 유효 여부를 저장하는 isValidAddress(tinyint) 컬럼으로 구성되어 있습니다.

2. 샘플 데이터 삽입하기

이제 INSERT 명령어를 사용해 테스트용 레코드를 몇 개 추가합니다.

mysql> insert into changeValuefrom1toY(isValidAddress) values(1);
Query OK, 1 row affected (0.22 sec)
mysql> insert into changeValuefrom1toY(isValidAddress) values(0);
Query OK, 1 row affected (0.16 sec)
mysql> insert into changeValuefrom1toY(isValidAddress) values(1);
Query OK, 1 row affected (0.19 sec)
mysql> insert into changeValuefrom1toY(isValidAddress) values(1);
Query OK, 1 row affected (0.15 sec)
mysql> insert into changeValuefrom1toY(isValidAddress) values(1);
Query OK, 1 row affected (0.16 sec)
mysql> insert into changeValuefrom1toY(isValidAddress) values(0);
Query OK, 1 row affected (0.12 sec)
mysql> insert into changeValuefrom1toY(isValidAddress) values(1);
Query OK, 1 row affected (0.49 sec)

3. 저장된 데이터 확인하기

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

mysql> select *from changeValuefrom1toY;

실행 결과는 다음과 같습니다.

+----+----------------+
| Id | isValidAddress |
+----+----------------+
|  1 |              1 |
|  2 |              0 |
|  3 |              1 |
|  4 |              1 |
|  5 |              1 |
|  6 |              0 |
|  7 |              1 |
+----+----------------+
7 rows in set (0.00 sec)

현재 isValidAddress 컬럼에는 1과 0의 숫자 값이 그대로 저장되어 있는 것을 확인할 수 있습니다.

4. CASE 문으로 1을 'Y'로 변환하기

이제 CASE 표현식을 적용하여 값 1을 'Y'로 변환해 보겠습니다. 사용한 쿼리는 다음과 같습니다.

mysql> select *,case
    -> when isValidAddress=1 THEN 'Y'
    -> ELSE isValidAddress
    -> END AS Answer
    -> from changeValuefrom1toY;

실행 결과는 다음과 같습니다.

+----+----------------+--------+
| Id | isValidAddress | Answer |
+----+----------------+--------+
|  1 |              1 | Y      |
|  2 |              0 | 0      |
|  3 |              1 | Y      |
|  4 |              1 | Y      |
|  5 |              1 | Y      |
|  6 |              0 | 0      |
|  7 |              1 | Y      |
+----+----------------+--------+
7 rows in set (0.00 sec)

결과 분석

출력 결과를 보면 Answer라는 새로운 컬럼이 추가된 것을 확인할 수 있습니다.

  • isValidAddress 값이 1인 경우 → 조건 when isValidAddress=1 THEN 'Y'에 의해 'Y'가 출력됩니다.
  • isValidAddress 값이 0인 경우 → WHEN 조건에 해당하지 않으므로 ELSE isValidAddress에 따라 원래 값인 0이 그대로 출력됩니다.

중요한 점은 CASE 문이 실제 테이블의 데이터를 변경하는 것이 아니라, 조회 결과에만 일시적으로 변환된 값을 표시한다는 것입니다. 따라서 원본 데이터는 그대로 유지됩니다.

마무리

이처럼 MySQL의 CASE 표현식을 활용하면 별도의 애플리케이션 로직 없이도 SQL 쿼리 내에서 간단히 값을 변환하여 출력할 수 있습니다. 만약 0을 'N'으로 함께 변환하고 싶다면 ELSE 'N'으로 수정하거나, when isValidAddress=0 THEN 'N' 조건을 추가하면 됩니다. 상황에 맞게 응용해서 활용해 보시기 바랍니다.