sub_title
 MSSQL
제   목 MSSQL - CASE WHEN문
작성자 다자래 등록일 2008-09-19 19:12:50 조회수 69,969

[MSSQL - CASE WHEN문]


MSSQL 에서 제공되는 CASE 문은 IF ~ ELSE 문과 기능이 흡사한 아주 유용한 명령어로서 기본형식은 아래와 같습니다.

CASE
          WHEN Boolean_expression1 THEN result_expression1
          WHEN Boolean_expression2 THEN result_expression2
          [...n]
          ELSE else_result_expression
END

위의 WHEN 과 THEN 문 사이에 있는 Boolean_expression1 이 '참' 이면 THEN 문 이하에 있는 result_expression1 이 실행됩니다. 마찬가지로 Boolean_expression2 가 '참'이면 result_expression2 가 실행됩니다.
WHEN ... THEN 문은 대괄호에 있는 n 만큼 반복 가능합니다.
이도 저도 아닌 경우에 ELSE 이하에 있는 else_result_expression 이 실행됩니다.

아래의 예제를 보시면 쉽게 이해가 가능하실 겁니다.

-- CASE WHEN THEN 문 예제
SELECT cus_id,
                  CASE WHEN substring(jumin, 7, 1) = '1' THEN '남자'
                              WHEN substring(jumin, 7, 1) = '2' THEN '여자'
                  ELSE '미등록'
                  END AS '성별'
FROM Customer

위의 예제에서는 Customer 테이블에서 cus_id 컬럼과 jumin 컬럼을 가져오고 있습니다. 그런데 jumin 컬럼의 모든 내용을 가져오는 것이 아니라 substring 함수를 이용해서 7번째에 있는 한개의 문자만 가져오고 있습니다. 이 가져온 값이 '1' 인 경우에는 '남자' 를 '2'인 경우에는 '여자' 를 출력합니다. 해당사항이 없을 경우에는 '미등록' 을 출력합니다.

쉽게 요약하면 아래와 같이 정리될 수 있습니다.

CASE
          WHEN 조건1 THEN 조건1이 참이면 실행
          WHEN 조건2 THEN 조건2가 참이면 실행
          ... [when 문은 반복가능]
          ELSE 조건1,2...n 에 맞지 않으면 실행
END

위에서 ELSE 문은 생략 가능합니다.

 

작성자: 다자래(mfcchang@naver.com)
웹제작 토탈 커뮤니티 http://www.webmadang.net
 
1
    
 
0
        list
 
※ 짧은 댓글일수록 예의를 갖추어 작성해 주시기 바랍니다.
line
reply cancel
 
번호 제목 글쓴이 추천 조회 날짜
34  인덱스를 위한 교재 추천 부탁 드립니다.   member 난모르겠 0 / 0 23404 2020-06-28
33  테이블 부하에 대해서...?   member 헨씀히포 0 / 0 23224 2019-05-24
32  MSSQL - 문자함수(len함수와 datalength 함수) 이미지   admin 웹마당넷 3 / 0 41081 2017-09-10
31  MSSQL - 백업 데이터를 다른 데이터베이스로 복원하기 이미지   admin 웹마당넷 6 / 2 29857 2015-07-05
30  MSSQL - SELECT 결과를 테이블로 만들기 이미지   admin 웹마당넷 1 / 0 27709 2015-06-26
29  기본 데이타 베이스 저장소 위치 바꾸기   member 아침마당 1 / 1 26433 2010-11-04
28  SQL Server 2008 복원시 트랜잭션 로그 백업   member 아침마당 1 / 0 26537 2010-09-25
27  SQL 인젝션 공격을 당했을 경우 인젝션 스크립트 지우는 저장 프로시저   member 아침마당 1 / 0 26076 2010-09-14
26  SQL Server 트랜잭션 로그 파일 줄이는 방법   member 아침마당 0 / 1 32450 2010-09-14
25  [MSSQL] SQL Server 2008 테이블 디자인 수정시 주의 사항   member 아침마당 1 / 0 28225 2010-08-22
24  [MSSQL] ISNULL 함수 간단 예제   member 아침마당 4 / 1 47998 2010-08-05
23  MSSQL - SELECT 와 동시에 INSERT 하기   admin 웹마당넷 14 / 3 153923 2009-02-03
22  MSSQL - IDENTITY 값 초기화 하기   admin 웹마당넷 3 / 2 63463 2009-01-27
21  MS-SQL 클러스터드 인덱스를 어떤 컬럼(들)에 생성하는 것이 유리할까?   member 마카로니 0 / 0 30014 2009-01-08
20  테이블 및 개체의 정보를 확인하기 위한 시스템 저장 프로시저(System Stored pr..   admin 웹마당넷 0 / 0 27632 2008-12-20
19  MSSQL 조인(JOIN)을 이용한 UPDATE 및 DELETE   admin 웹마당넷 5 / 0 53899 2008-11-29
18  SQL injection 웹에서 체크하기   member 수확물 0 / 0 26860 2008-10-10
17  MSSQL - CASE WHEN문   member 다자래 1 / 0 69969 2008-09-19
16  [MSSQL] 파티션 정보 검색   member 수확물 0 / 0 28703 2008-09-08
15  [MSSQL] DDL_Trigger_Example   member 수확물 0 / 0 34650 2008-09-08
14  [MSSQL] xml을 이용한 split   member 수확물 1 / 0 28823 2008-08-26
13  MSSQL - UNION ALL을 이용했을때 테이블명 가져오기 이미지   member 다자래 0 / 0 40225 2008-08-21
12  MSSQL - NULL 값을 다른 값으로 대체하기   member 다자래 8 / 4 101420 2008-08-21
11  [MSSQL] View안에 저장프로스져를 쓰는 방법   member 수확물 0 / 0 45392 2008-08-08
10  MSSQL - 숫자 세자리 마다 콤마(쉼표) 찍기   member 다자래 5 / 0 59247 2008-08-07
write
[2] button