MySQL에서 특정 조건이 참(true)일 때 원하는 값을, 그렇지 않을 경우 특수 문자를 대신 표시하고 싶다면 IF() 함수를 활용하면 됩니다. IF() 함수는 조건식의 결과에 따라 두 가지 값 중 하나를 반환하는 간단하면서도 강력한 도구입니다.
이 글에서는 실제 예제를 통해 클라이언트 정보 테이블에서 나이가 50세를 초과하는 경우에만 이름을 표시하고, 그 외의 경우에는 하이픈(-)으로 구성된 특수 문자를 출력하는 방법을 단계별로 살펴보겠습니다.
1. 테이블 생성하기
먼저 예제에 사용할 테이블을 생성합니다. ClientId는 자동 증가 기본 키로 설정하고, ClientName과 ClientAge 컬럼을 함께 정의합니다.
mysql> create table DemoTable637
(ClientId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
ClientName varchar(100),
ClientAge int
);
Query OK, 0 rows affected (0.82 sec)2. 레코드 삽입하기
INSERT 명령을 사용하여 테이블에 샘플 데이터를 넣어 보겠습니다.
mysql> insert into DemoTable637(ClientName,ClientAge) values('Chris',23);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable637(ClientName,ClientAge) values('Robert',24);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable637(ClientName,ClientAge) values('David',57);
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable637(ClientName,ClientAge) values('Carol',60);
Query OK, 1 row affected (0.13 sec)3. 전체 레코드 조회하기
SELECT 문으로 테이블에 저장된 모든 레코드를 확인합니다.
mysql> select *from DemoTable637;
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+----------+------------+-----------+ | ClientId | ClientName | ClientAge | +----------+------------+-----------+ | 1 | Chris | 23 | | 2 | Robert | 24 | | 3 | David | 57 | | 4 | Carol | 60 | +----------+------------+-----------+ 4 rows in set (0.00 sec)
4. 조건이 참일 때 특수 문자 설정하기
이제 핵심인 IF() 함수를 적용해 보겠습니다. 아래 쿼리는 ClientName이 NULL이 아니고 ClientAge가 50보다 큰 경우에만 클라이언트 이름을 그대로 반환하고, 조건을 만족하지 않으면 하이픈 13개('-------------')를 대신 표시합니다.
mysql> select if(ClientName IS NOT NULL AND ClientAge > 50, ClientName, '-------------') from DemoTable637;
실행 결과는 다음과 같습니다.
+--------------------------------------------------------------------------+ | if(ClientName IS NOT NULL AND ClientAge > 50,ClientName,'-------------') | +--------------------------------------------------------------------------+ | ------------- | | ------------- | | David | | Carol | +--------------------------------------------------------------------------+ 4 rows in set (0.00 sec)
결과 분석
출력 결과를 보면 논리가 명확하게 작동한 것을 확인할 수 있습니다.
- Chris(23세)와 Robert(24세)는 나이가 50 이하이므로 조건이 거짓(false)이 되어 특수 문자 '-------------'가 표시됩니다.
- David(57세)와 Carol(60세)은 이름이 NULL이 아니고 나이가 50을 초과하므로 조건이 참(true)이 되어 실제 이름이 그대로 출력됩니다.
IF() 함수 문법 정리
IF() 함수의 기본 문법은 다음과 같습니다.
IF(조건식, 조건이_참일_때_값, 조건이_거짓일_때_값)
이처럼 IF() 함수를 사용하면 별도의 애플리케이션 로직 없이도 SQL 쿼리 내에서 조건부 값을 손쉽게 처리할 수 있습니다. NULL 체크, 범위 비교 등 다양한 조건과 결합하여 활용 범위를 넓힐 수 있으니, 상황에 맞게 응용해 보시기 바랍니다.