메뉴 건너뛰기

2023.01.10 15:12

CASE 문법 사용 하기

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


  1. No Image 16Feb
    by
    2023/02/16 Views 206 

    MariaDB can't create test file lower-test

  2. No Image 12Jan
    by
    2023/01/12 Views 137 

    mysql table 값 변경 mariadb 테이블 값 변경

  3. No Image 12Jan
    by
    2023/01/12 Views 196 

    mysql-bin(binary log)파일 정리 및 삭제

  4. No Image 10Jan
    by
    2023/01/10 Views 167 

    데이터베이스별 / 테이블별 용량 확인 하기

  5. 10Jan
    by 조쉬
    2023/01/10 Views 157 

    CASE 문법 사용 하기

  6. FORMAT 문법 사용 하기(숫자 자리수 나타내기)

  7. binlog 조회 / 삭제 / 보관 기간 설정

  8. MYSQL 부속질의어 예제&문제 9

  9. MYSQL select 명령문의 조합 &union 예제&문제 8

  10. MYSQL order by 예제&문제 7

  11. MYSQL Groupby & having 예제 문제 6

  12. MYSQL 통계 함수 SUM AVG MAX MIN 예제 문제 5

  13. MYSQL any&all&in&예제& WHERE 절 문제4

  14. MYSQL IN&BETWEEN&NULL&예제&FROM절 문제3

  15. MYSQL 기초문법&예제&문제 2

  16. MYSQL 기초문법&예제&문제

  17. MYSQL FULLTEXT INDEX & PARTION 검색기능향상&파티션

  18. MYSQL 트리거 중첩트리거

  19. MYSQL 프로시져 PROCEDURE

  20. No Image 26Mar
    by
    2021/03/26 Views 204 

    날짜형(DATETIME) 빼기

Board Pagination Prev 1 2 3 4 5 6 7 Next
/ 7

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved