[MySQL][TIP] IF, CASE, IFNULL 사용하기 (조건문)

2021. 1. 6. 14:39 Database/mysql tip

1. 테스트할 테이블 생성 코드

[그림 1-1] 테스트할 테이블 및 데이터

CREATE TABLE `tbl_condition_test` (
    `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    `col1` INT(10) UNSIGNED NULL DEFAULT NULL,
    `col2` INT(10) UNSIGNED NULL DEFAULT NULL,
    PRIMARY KEY (`id`)
)
COLLATE='utf8_general_ci'
ENGINE=MyISAM

2. 샘플 데이터 삽입 코드

INSERT INTO `test` (`id`, `col1`, `col2`) VALUES (1, NULL, 11);
INSERT INTO `test` (`id`, `col1`, `col2`) VALUES (2, 2, 12);
INSERT INTO `test` (`id`, `col1`, `col2`) VALUES (3, 3, 13);
INSERT INTO `test` (`id`, `col1`, `col2`) VALUES (4, NULL, 14);
INSERT INTO `test` (`id`, `col1`, `col2`) VALUES (5, 5, 15);
INSERT INTO `test` (`id`, `col1`, `col2`) VALUES (6, 6, 21);
INSERT INTO `test` (`id`, `col1`, `col2`) VALUES (7, 7, 22);
INSERT INTO `test` (`id`, `col1`, `col2`) VALUES (8, 8, 23);
INSERT INTO `test` (`id`, `col1`, `col2`) VALUES (9, NULL, 24);
INSERT INTO `test` (`id`, `col1`, `col2`) VALUES (10, 10, 25);

 

3. 상황을 하나 예로 들어서 조건문을 어떻게 사용하는지 알아보려고 합니다.

[예시] 만약 col1 값이 NULL이면 col2 값을 선택하고 만약 col1값이 NULL이 아니면 col1값을 선택한다.

3-1) IF 이용하기

SELECT IF( col1 IS NULL, col2, col1) FROM tbl_condition_test

3-2) IFNULL 이용하기

SELECT IFNULL(col1, col2) FROM tbl_condition_test

3-3) CASE WHEN THEN ELSE END 이용하기 

여기에는 위 조건에 하나 더 추가하여 col1 값이 10이면 100을 선택한다로 해보겠습니다.

SELECT CASE WHEN col1 IS NULL THEN col2 WHEN col1 = 10 THEN 100 ELSE col1 END FROM tbl_condition_test