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

MySQL SELECT 문에서 값 1을 Y로 변환하는 방법

MySQL에서 IF() 함수로 1을 Y로 변환하기

MySQL에서는 IF() 함수를 사용하여 SELECT 문의 결과값을 1에서 'Y'로 손쉽게 변환할 수 있습니다. 이 방법은 boolean 타입(tinyint) 컬럼의 값을 화면에 표시할 때 가독성을 높이고 싶을 때 특히 유용합니다.

기본 문법

SELECT IF(yourColumnName,'Y',yourColumnName) as anyVariableName FROM yourTableName;

IF() 함수는 첫 번째 인자가 참(1 또는 true)이면 두 번째 인자를 반환하고, 거짓이면 세 번째 인자를 반환합니다. 위 문법에서는 컬럼 값이 1일 경우 'Y'를 출력하고, 그렇지 않으면 원래 값을 그대로 표시합니다.

예제 테이블 생성

실제 동작을 확인하기 위해 먼저 예제 테이블을 생성해 보겠습니다. 아래 쿼리로 changeValuefrom1toY 테이블을 만듭니다.

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

샘플 데이터 삽입

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)

저장된 데이터 확인

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)

IF() 함수로 1을 Y로 변환

이제 IF() 함수를 적용하여 isValidAddress 컬럼의 값이 1일 때 'Y'로 표시되도록 변환해 보겠습니다.

mysql> select if(isValidAddress,'Y',isValidAddress) as Answer from changeValuefrom1toY;

변환된 결과는 다음과 같습니다.

+--------+
| Answer |
+--------+
| Y      |
| 0      |
| Y      |
| Y      |
| Y      |
| 0      |
| Y      |
+--------+
7 rows in set (0.00 sec)

추가 팁: 0도 N으로 변환하기

만약 0인 값도 'N'으로 표시하고 싶다면 IF() 함수의 세 번째 인자를 활용하면 됩니다.

SELECT IF(isValidAddress='1','Y','N') as Answer FROM changeValuefrom1toY;

또는 CASE 문을 사용하면 더 복잡한 조건 분기도 처리할 수 있습니다.

SELECT CASE WHEN isValidAddress = 1 THEN 'Y' ELSE 'N' END AS Answer
FROM changeValuefrom1toY;

이처럼 MySQL의 IF() 함수나 CASE 문을 활용하면 숫자 형태의 boolean 값을 사용자에게 더 친숙한 문자 형태로 변환하여 출력할 수 있습니다.