CASE 문법 사용 하기

by 조쉬 posted Jan 10, 2023
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

MySQL을 사용하다 보면 Query(쿼리) 구문에서 Switch(스위치) 문 혹은 IF문과 같이 조건문을 사용하여 결과값을 내야 하는 경우가 있다. 

물론 이런 거 없이 Query 하여 나온 결과를 가져와 Code(코드)상에서 처리할 수 도 있으나 그것보다는 Query로 나온 결과값을 바로 사용하는 편이 훨씬 간결하고 가독성도 좋다.(물론 이해하기에도 더 쉽다)

MySQL에서는 CASE라는 Function(함수)을 제공하고 있으며, 해당 Function은 "MySQL 4.0 이상"부터 사용이 가능하다.

CASE 문은 조건을 통과하고 첫 번째 조건이 충족되면 값을 반환한다.

조건에 따라 True(참)이면 읽기를 중지하고 결과를 반환하고, 조건이 True(참)가 아니면 ELSE 절의 값을 반환한다.

ELSE 부분이 없고 조건이 참이 아니면 NULL을 반환합니다.

그럼 아래 예제를 통해서 사용하는 방법을 알아보도록 하자.

1. CASE문 사용 방법

  • WHEN - THEN은 항상 같이 사용 되어야 한다.
  • WHEN - THEN은 여러개 사용이 가능하다.
  • ELSE가 존재하면 모든 WHEN - THEN 조건이 TRUE(참)이 아닌 경우 ELSE의 결과값을 반환한다. 
  • ELSE가 없고, 조건이 TRUE(참)이 아니면 NULL을 반환한다.
# CASE문 사용 방법

CASE
	WHEN 조건1 THEN 결과값1
	WHEN 조건2 THEN 결과값2
	WHEN 조건N THEN 결과값N
	ELSE 결과값
END

 

2. 예제(Example)

그럼 예제(Example)을 통해서 실행해보도록 하자.

먼저 테스트 테이블을 생성(Test Create table) 및 테스트 데이터를 넣어(Test Data Insert) 보자. 

# CREATECREATE TABLE `test` (
  `id` int(1) unsigned NOT NULL,
  `number` int(1) unsigned NOT NULL,
  `kind` varchar(200) NOT NULL,
  PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;

# INSERTINSERT INTO `test` (`id`, `number`, `kind`) VALUES
  ('1', '1', 'Apple'),
  ('2', '1', 'Pear'),
  ('3', '2', 'carrot'),
  ('4', '3', 'cat'),
  ('5', '3', 'dog'),
  ('6', '4', 'human');

테이블을 준비 했으면 Query를 작성해보도록 하자.

# CASE Query

SELECT 
	id AS id,
	(
    	CASE
	  WHEN number = 1 THEN 'fruit'
	  WHEN number = 2 THEN 'vegetable'
	  WHEN number = 3 THEN 'animal'
	  ELSE 'not'
    	END
	) AS type,
	kind AS type_desc
FROM
	test;
  


[OUTPUT]
---------------------------------
id	type		type_desc
---------------------------------
1	fruit		Apple
2	fruit		Pear
3	vegetable	carrot
4	animal		cat
5	animal		dog
6	not		human

 

sql fiddle을 통해 구현

 

이처럼 CASE문을 통해서 Query상에서 원하는 결과값으로 변경하여 사용할 수 있다.

그리고 SQL Fiddle 라는 사이트를 통해서 간단한 테이블 생성, Query 등을 할 수 있고, 진행했던 내용에 대해서도 Link(링크)를 남길 수 있다. 

위 Query의 대한 테스트 내용도 아래와 같이 남겨 놓았다. 같이 참고하면 더 쉽게 이해할 수 있을 것이다.