메뉴 건너뛰기

2023.01.10 15:12

CASE 문법 사용 하기

조회 수 111 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

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의 대한 테스트 내용도 아래와 같이 남겨 놓았다. 같이 참고하면 더 쉽게 이해할 수 있을 것이다. 


List of Articles
번호 제목 날짜 조회 수
126 MySQL 최적화 방법 설명 2014.02.27 8022
125 MySql 문자열 합치기 2014.02.27 6254
124 컬럼내 특정 문자를 다른문자로 변경하고자 할때 2014.02.27 6012
123 MySQL Replication 설정(Master-Slave, Maste 2014.02.27 6782
122 Mysql 기본 명령어 2014.02.27 5693
121 MySQL/MariaDB 백업 & 복원 - mysqldump 2015.08.07 7384
120 다양한 단위의 시간차 구하기 2015.12.19 8360
119 월의 마지막 일수를 반환하는 함수입니다 2015.12.19 5996
118 DB의 모든 테이블을 삭제하는 쿼리 2016.08.29 6767
117 각각의 게시판에서 제일 최근글하나씩을 모아 정렬 2016.08.30 5812
116 컬럼에 포함된 특정문자열을 검색해서 그 문자로 또 다른 테이블검색하기 2016.08.30 6606
115 MySQL 서버 데몬이 죽었을때 다시 실행하는 방법 2016.08.30 5842
114 MySql 에서 외래키(FK) 설정하는 방법과 Toad 에서 확인하기 file 2016.08.30 7151
113 MySql 윈도우에서 DB dump 백업과 복구하기 file 2016.08.30 8475
112 MySQL 에서 NULL 값 처리 file 2016.08.30 6423
111 MySql 의 Trigger(트리거) 로 정보 업데이트 file 2016.08.30 10153
110 MySQL INSERT 성능 향상 2016.12.22 11523
109 mysql 날짜 관련 date_add, date_format 2016.12.23 5500
108 DISTINCT와 ALL 2016.12.23 5498
107 InnoDB, MyISAM 2016.12.23 5536
Board Pagination Prev 1 2 3 4 5 6 7 Next
/ 7

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved