메뉴 건너뛰기

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


  1. No Image 26Mar
    by
    2021/03/26 Views 315 

    BEGIN, COMMIT, ROLLBACK

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

  3. 10Jan
    by 조쉬
    2023/01/10 Views 111 

    CASE 문법 사용 하기

  4. No Image 26Mar
    by
    2021/03/26 Views 129 

    column의 정보 중에서 column 설명(column_comment)

  5. No Image 23Dec
    by
    2016/12/23 Views 6012 

    Create Procedure

  6. No Image 29Aug
    by
    2016/08/29 Views 6767 

    DB의 모든 테이블을 삭제하는 쿼리

  7. No Image 23Dec
    by
    2016/12/23 Views 5498 

    DISTINCT와 ALL

  8. No Image 23Dec
    by
    2016/12/23 Views 5788 

    Dump & Restore

  9. No Image 23Dec
    by
    2016/12/23 Views 5871 

    dump 를 db에 올릴때 인코딩 문제

  10. flush privileges 명령어

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

  12. No Image 26Mar
    by
    2021/03/26 Views 125 

    fulltext 관련 글

  13. No Image 26Mar
    by
    2021/03/26 Views 262 

    group by, distinct, count 를 이용한 겹치지 않는것의 개수

  14. No Image 26Mar
    by
    2021/03/26 Views 594 

    group by로 뽑아온 값중에 가장큰 값(max)의 상태값을 가져오기

  15. No Image 23Dec
    by
    2016/12/23 Views 5440 

    IMPORT

  16. No Image 23Dec
    by
    2016/12/23 Views 5809 

    IN 연산자

  17. No Image 18Jul
    by
    2018/07/18 Views 1675 

    InnoDB 스토리지 엔진에서 테이블의 최대 저장 row 개수

  18. No Image 23Dec
    by
    2016/12/23 Views 5536 

    InnoDB, MyISAM

  19. No Image 26Mar
    by
    2021/03/26 Views 247 

    LIMIT 속도 저하

  20. No Image 16Feb
    by
    2023/02/16 Views 139 

    MariaDB can't create test file lower-test

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

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved