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

MySQL에서 IF() 함수로 데이터가 NULL인지 확인하는 방법

MySQL에서는 IF() 함수를 사용하여 데이터가 NULL인지 간단하게 확인할 수 있습니다. 이 글에서는 예제 테이블을 만들고, NULL 값을 판별하는 방법을 단계별로 살펴보겠습니다.

1. 예제 테이블 생성하기

먼저 실습에 사용할 테이블을 생성합니다.

mysql> create table DemoTable
(
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Name varchar(200),
    Age int
);
Query OK, 0 rows affected (0.44 sec)

Id 컬럼은 자동 증가(AUTO_INCREMENT) 기본키로 설정했고, Name과 Age 컬럼에는 NULL 값이 들어갈 수 있도록 했습니다.

2. 레코드 삽입하기

insert 명령어를 사용해 테이블에 데이터를 입력합니다. 이때 일부 레코드의 Age 값은 의도적으로 NULL로 넣습니다.

mysql> insert into DemoTable(Name,Age) values('John',23);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable(Name,Age) values('Sam',null);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable(Name,Age) values('Mike',23);
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable(Name,Age) values('David',21);
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable(Name,Age) values('Carol',null);
Query OK, 1 row affected (0.13 sec)

3. 저장된 데이터 조회하기

select 명령어로 테이블의 전체 레코드를 확인해 보겠습니다.

mysql> select *from DemoTable;

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

+----+-------+------+
| Id | Name  | Age  |
+----+-------+------+
| 1  | John  | 23   |
| 2  | Sam   | NULL |
| 3  | Mike  | 23   |
| 4  | David | 21   |
| 5  | Carol | NULL |
+----+-------+------+
5 rows in set (0.00 sec)

Sam과 Carol의 Age 값이 NULL로 저장된 것을 확인할 수 있습니다.

4. IF() 함수로 NULL 여부 확인하기

다음은 IF() 함수를 사용해 데이터가 NULL인지 검사하는 쿼리입니다. 조건식 Age IS NULL이 참이면 'Age is missing'이라는 메시지를 출력하고, 거짓이면 원래의 Age 값을 그대로 보여줍니다.

mysql> select if(Age IS NULL,'Age is missing',Age) from DemoTable;

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

+--------------------------------------+
| if(Age IS NULL,'Age is missing',Age) |
+--------------------------------------+
| 23                                   |
| Age is missing                       |
| 23                                   |
| 21                                   |
| Age is missing                       |
+--------------------------------------+
5 rows in set (0.00 sec)

NULL이 있는 위치마다 'Age is missing' 메시지가 표시되어, 어떤 레코드의 나이 정보가 비어 있는지 한눈에 파악할 수 있습니다.

참고: NULL 처리에 유용한 다른 함수들

IF() 외에도 MySQL에서는 NULL 값을 다루기 위한 다양한 함수를 제공합니다.

  • ISNULL(expr): expr이 NULL이면 1, 아니면 0을 반환합니다.
  • IFNULL(expr, 대체값): expr이 NULL일 경우 지정한 대체값으로 바꿔 반환합니다.
  • COALESCE(expr1, expr2, ...): 인수 목록 중 NULL이 아닌 첫 번째 값을 반환합니다.

예를 들어 SELECT IFNULL(Age, 0) FROM DemoTable;처럼 사용하면 NULL 값을 0으로 치환하여 조회할 수 있습니다. 상황에 맞게 적절한 함수를 활용하면 NULL 데이터를 더욱 효율적으로 관리할 수 있습니다.