본문 바로가기

DB/MSSQL

[MSSQL] CASE문 사용법

CASE 문은 특정 컬럼의 내부의 값이 어떠한 값인지에 따라 결과 구문을 정할 수 있는 문법입니다. 

해당 문법을 어디에 사용하느냐에 따라 SELECT문 혹은, INSERT, UPDTE문 등 다양한 위치에서 사용가능합니다.

문법은


CASE [컬럼명] 
    WHEN 조건1 THEN 조건1이 참일때 값
    WHEN 조건2 THEN 조건2가 참일때 값
    ...
    ELSE 조건중에 참이 없을 때 값
END    


위과 같은데 위의 [컬럼명]은 필수 값이 아니며, [컬럼명]의 사용여부에 따라 CASE 문의 사용법이 두가지 방법으로 나뉘는데 첫번째는 컬럼을 WHEN 구절 이전에 미리 선언하는 방식, 두번째는 WHEN구절 이후에 지정하는 방식입니다.

컬럼을 미리 선언하는 방식


해당 방식은 컬럼을 미리 선언해두어 반복되는 컬럼 명을 없애 코드를 간결하게 만드는 방식입니다. 

이 방식은 코드가 간결해지는 장점이 있는 대신, WHEN 이후에 조건절에서 자유롭게 조건을 명시하는 것이 아닌 컬럼의 값이 조건절 이후의 값과 같은지 즉 = 연산만 가능한 방식이라는 단점이 있습니다.

문법은 다음과 같습니다.


CASE 컬럼명
    WHEN 조건1 THEN 조건1이 참일때 값
    WHEN 조건2 THEN 조건2가 참일때 값
    ...
    ELSE 조건중에 참이 없을 때 값
END    


실제 사용의 예시를 들어보면,


CASE USER_NUMBER
    WHEN '1' THEN '일번'
    WHEN '2' THEN '이번'
    ELSE '없는 데이터'
END    


정도입니다.


WHEN 구절이후 컬럼을 선언하는 방식 


해당 방식은 컬럼명을 미리 선언해두지 않고 WHEN 구절 이후에 명시함으로서 코드의 길이는 더 길어지지만 = 연산자 뿐만 아니라 다른 비교 연산자들도 사용가능하기 때문에 좀 더 유용한 방식입니다. 

문법은 다음과 같습니다.


CASE 
    WHEN 조건1 THEN 조건1이 참일때 값
    WHEN 조건2 THEN 조건2가 참일때 값
    ELSE 조건중에 참이 없을 때 값
END  
  

실제 사용 시


CASE
    WHEN USER_SIZE > 25 THEN '매우큼'
    WHEN USER_SIZE > 15 THEN '큼'
    ELSE '작음'
END    


와 같은 방식으로 사용가능 합니다.


'DB > MSSQL' 카테고리의 다른 글

[MSSQL]DB 테이블 스키마 스크립트 파일 생성하기  (0) 2019.12.09