안규 공부방

MS-SQL > case when ~ end - 조건 처리문

등록일 : 2017-06-30 17:05 조회수 : 93,227

이건 어떻게 보면 너무 간단히 처리할 수 있는 문제입니다.. 
예를 들어 non 이란 필드에 0,1,2 값이 각각 들어 있다고 가정할 때, 0='초급' , 1='중급' , 2='고급'을 출력시키고 
싶습니다..... 

여러분은 아마 rs("non") 과 같이 레코드 셋을 불러와 ,,,

if rs("non")="0" then 
    cho="초급"
els if rs("non")="1" then 
    cho="중급"
    :

위 처럼 처리를 해 줬을꺼란 생각이 듭니다... 그러나,, 이러한 방법은 처리 속도 뿐 아니라,,, 프로그램의 길이나
보기에는 조금 실망이죠???
제가 여기에서 생각해 보았던 부분은 이러한 조건 처리를 과연 쿼리 하나로 구현 할 수 있는가? 라는 거였습니다.
결론을 먼저 말하면,, 이러한 처리도 너무나 간단히 쿼리문을 통해 처리가 가능하다는 것이었습니다.... 
그럼, 쿼리문이 얼마나 강력한지 한번 테스트를 해 보시기 바랍니다.

그럼,,,,, 소스를 보면서 설명드리겠습니다.... 아래는 제가 직접 작성하고 테스트해본 쿼리문입니다....
no 필드와 non 필드가 존재합니다.... 여기에서 non=0 , non=1, non=2를 체크합니다.. 그런다음 cho라는 이름의 
가상 필드에 값을 기억을 시킵니다. '초급','중급',고급' 중 조건에 맞는 값이 'cho'란 가상 필드에 들어가게 되는 겁니다.
화면에 뿌려줄 때,,, rs("cho") 식으로 뿌려주기만 하면,,, ASP 문법을 이용한 어떠한 처리도 필요가 없다는 겁니다. 

case when non='0' then '초급'
    when non='1' then '중급'
    when non='2' then '고급'
end 

case when ~ end 문을 사용했답니다. 여기에서 non은 필드의 이름며 비교을 하게되는 겁니다.... 여기에서도 또한 and or not과 같은 조건,관계 연산들을 처리할 수 있습니다....
그런다음 .... as cho 는 cho란 가상필드에 값을 넣는다는 겁니다.... 

case when 조건 then '기억되는 값'   

이정도면 case when  에 대한 간단한 설명을 마무리 하겠습니다.. 여러분께서 아마 쿼리에 조금만 관심을 갖게 된다면
정말 간결하면서도 고급스러운 프로그래밍을 접할 수 있게 될거란 생각이 듭니다... 
이미 공개되어 있는 많은 프로그램의 소스들이 있지만,, 그것만을 보고 더 이상 공부를 게을리 한다면,,, 여러분은 
회사에서나 주위에서 아마 인정을 받기가 쉽지 않을 꺼란 생각이 듭니다.... 

저도 형편없는 실력을 가지고 있지만,, 나만의 프로그래밍 기법을 위해 공부 중에 있답니다.... 
그럼,,,, 오늘도 건강하시구요......... 저희 홈에 들려 주셔서 정말로 감사를 드린답니다.....
 

select no, case when non = '0' then '초급'
 when non='1' then '중급'
 when non='2' then '고급'
  end as cho from munje order by no 

 
※ 혹시 도움이 되셨다면 댓글에 한마디 남겨주세요!
작성자   비밀번호
자동글 방지     (자동글 방지 기능입니다.)
내용   댓글달기 
이메일 문의 : cak0280@nate.com  
Copyright 2000 By ENTERSOFT.KR All Rights Reserved.