MSSQL

[MSSQL] 분기문을 쿼리로 짜보자.

#IF문쿼리 #ELSEIF #DB프로그래밍 #CASE_WHEN_THEN_END #알아두면좋아요

안녕하세요, 배곧동개발자 입니다.

프로그래밍을 하면서 빼놓을수 없는것중 하나가 if, 즉 분기문 이지요? 이번 포스팅에서는 MSSQL에서 분기문을 사용하는 방법에 대해서 알아볼까합니다.


1. Javascript의 분기문

먼저 비교하기위해서 한번 봐보자면, 자바스크립트를 예로들자면 이렇게 if문을 짜요.

if(name == "서초동개발자"){
 alert("가짜다!");
}else if(name == "배곧동개발자"){
 alert("진짜야!");
}else{
 alert("ETC");
}

이런 if문을, SQL로 할수있을까요?


2. MSSQL의 분기문

당연히 가능합니다. if, else if, else로 구성된 이 문장은 SQL로 넘어가서는 CASE, WHEN THEN, ELSE, END로 구성되게 되요.

예시를 먼저 볼까요?

CASE
    WHEN @NAME = '서초동개발자' THEN '가짜다!' 
    WHEN @NAME = '배곧동개발자' THEN '진짜야!'
    ELSE 'ETC'
END

위에 자바스크립트의 문장과 동일한 기능을 하는 쿼리에요. else if를 넣는 부분이 그냥 WHEN THEN 으로 구성되죠?

else 부분은 똑같네요. 마지막 END만 챙기면, 무리없죠?


3. 쿼리에 분기문을 쓰는 이유

자바딴에서 하면 되지 뭐하러 쿼리에서 하냐? 할수있어요. 사용해야 할 상황이 분명 생깁니다. 예를들면 스케줄 돌릴때 분기문을 쓰려면 무조건 이거써야지요.

또는 프로시저를 만들 때에도 상당히 많이 쓰이며 간단한 쿼리를 만들 때에도 쓰입니다. 하나 보여드리자면

select 
 case 
  when LAST_UPDT_PNTTM is not null 
    then convert(varchar,LAST_UPDT_PNTTM,112)
  else ''
 end as 'upt_dt'
from 
 LETTNBBS

이렇게 사용할 수 있습니다.

LAST_UPDT_PNTTM 이라는 컬럼에 최종수정일자가 저장되는데, 이게 null인지 체크해서 null이 아니라면 yyyymmdd 포맷으로 보여주고 아니라면 빈값을 보여주라는 분기문이지요.


초보적인거지만 가끔 헷갈리기도 하고 모를수있으니 기억해두셨다가 막힘없는 코딩하세요.

이만, 배곧동개발자 였습니다.

배곧동개발자

Recent Posts

[MSSQL] 넓은 영어, 띄어쓰기 영어 입력되는 현상 (전각입력/문자폭)

#MSSQL #문자폭 #영어넓이 #쿼리입력안됨 1. MSSQL 영어 입력 안되는 현상 MSSQL을 주로 쓰고 있는데 MSSMS에서…

1개월 ago

[이미르] 다니아믹 키 확실한 해결방법 (커스텀토큰/접속불가)

#레전드오브이미르 #다이나믹키가다릅니다 #커스텀토큰 #접속불가 #오류 #해결방법 1. 다이나믹 키 더럽다! 유저의 다이나믹키가 다릅니다. 위메이드의 레전드…

1개월 ago

[이미르] 대기열 왜 이렇게 길어졌나? (중국작업장/매크로)

#레전드오브이미르 #작업장 #쌀먹 #중국 #매크로 #대기열 1. 운영 문제 있네? 이제 오픈 2주차에 들어온 위메이드의…

2개월 ago

[이미르] 엠틱을 챙겨보자 (스토리덱/마나회복력)

#레전드오브이미르 #엠틱 #마나회복력 #스토리덱 1. 마나가 너무 부족해! 레전드 오브 이미르는 스킬 위주의 액션 게임이라고…

2개월 ago

[이미르] 시구르드와 대화 (위치/메인퀘스트19-19)

#레전드오브이미르 #파괴가남긴것 #시구르드 #19-19 #위치 1. 파괴가 남긴 것 레전드 오브 이미르 메인퀘스트 19-19인 "파괴가…

2개월 ago

[이미르] 트롤의 비밀상자, 트롤의 유적상층 보물상자 위치

#레전드오브이미르 #트롤의비밀상자 #트롤의유적상층 #보물상자 #위치 1. 트롤의 비밀 상자 이번에 알아 볼 의뢰게시판 의뢰는 바로…

2개월 ago