Serach

2013년 10월 10일 목요일

MS-SQL Case

Case문은 일종의 조건식입니다. 비슷한 조건식으로 If문이 있는데 If문은 참 또는 거짓형태만을 조건식으로 지정할 수 있는반면 Case문은 If문보다 분기할 수 있는 조건의 선택폭이 좀더 넓다고 할 수 있습니다.

Declare @iTF Bit;
Set @iTF = 0;
Select Case @iTF When 0 Then  N'0 입니다.' Else N'1 입니다.' End;

Case 문을 통해 @iTF값이 0일때와 1일때 각각 다른 내용의 Message를 반환하도록 합니다.


When와 Then절을 사용한 예입니다.

Declare @iTF Tinyint;
Set @iTF = 3;
Select Case @iTF When 0 Then N'0 입니다.'
  When 1 Then N'1 입니다.'
  When 2 Then N'2 입니다.'
  When 3 Then N'3 입니다.'
  Else N'3보다 큰 수 입니다.' End;

When에 의해 지정된 값을 비교하면서 해당 값과 맞으면 Then을, 값이 존재하지 않으면 Else절에 있는 구문을 실행하도록 하였습니다.


Case를 통해 각기 다른 조건에 따라 처리를 지정하려면 'When 조건식 Then 처리내용'과 같은 방법으로 지정합니다.

Select Color, (Case When Color = 'Silver' Then SafetyStockLevel
  When Color = 'Red' Then ReorderPoint
  When Color = 'Black' Then StandardCost
  Else ListPrice End)
From Production.Product
Where Color Is Not Null;

Color가 Silver이면 SafetyStockLevel Column의 값을, Red이면 ReorderPoint Column의 값을, Black이면 StandardCost Column의 값을 가져오고 Silver나 Red, Black이 아니면 ListPrice값을 가져오도록 합니다.


주의:
Case문에서 Then절에 의한 처리가 여러개일때 값의 형태는 문자열형이든 숫자형이든 Data형이 같아야 합니다. 만일 Data형이 다른 경우 자동변환을 할 수는 있지만 그것 조차 안되는 경우 오류를 일으킬 수 있습니다.


댓글 없음:

댓글 쓰기