CASE는 두 가지 형식(simple-when 형식과 searched-when 형식)의 복합 함수입니다. 두 형식에서 CASE는 후속 처리의 경로를 제어하는 결과 값을 리턴합니다.
CASE의 두 형식 모두 WHEN절에 정의된 규칙 세트에 따라 값을 리턴합니다.
단순 WHEN 형식에서 source_value는 일치를 찾을 때까지 각 test_value와 비교됩니다. CASE 함수의 결과는 해당 result_value의 값입니다. 따라서 source_value의 데이터 유형은 각 test_value의 데이터 유형과 비교할 수 있어야 합니다.
CASE 함수에는 최소한 하나 이상의 WHEN이 있어야 합니다. ELSE는 선택적입니다. 디폴트 ELSE 표현식은 널(null)입니다. CASE 표현식은 END로 구분됩니다. 테스트 값은 리터럴 값일 필요가 없습니다.
searched-when절 버전은 비슷하지만 여러 가지 다른 값들을 테스트할 수 있도록 추가 유연성이 있습니다.
DECLARE CurrentMonth CHAR; DECLARE MonthText CHAR; SET CurrentMonth = SUBSTRING(InputBody.Invoice.InvoiceDate FROM 6 FOR 2); SET MonthText = CASE CurrentMonth WHEN '01' THEN 'January' WHEN '02' THEN 'February' WHEN '03' THEN 'March' WHEN '04' THEN 'April' WHEN '05' THEN 'May' WHEN '06' THEN 'June' ELSE 'Second half of year' END
DECLARE CurrentMonth CHAR; DECLARE MonthText CHAR; SET CurrentMonth = SUBSTRING(InputBody.Invoice.InvoiceDate FROM 6 FOR 2); SET MonthText = CASE WHEN Month = '01' THEN 'January' WHEN Month = '02' THEN 'February' WHEN Month = '03' THEN 'March' WHEN Month = '04' THEN 'April' WHEN Month = '05' THEN 'May' WHEN Month = '06' THEN 'June' ELSE 'Second half of year' END
DECLARE CurrentMonth CHAR; DECLARE CurrentYear CHAR; DECLARE MonthText CHAR; SET CurrentMonth = SUBSTRING(InputBody.Invoice.InvoiceDate FROM 6 FOR 2); SET CurrentYear = SUBSTRING(InputBody.Invoice.InvoiceDate FROM 1 FOR 4); SET MonthText = CASE WHEN CurrentMonth = '01' THEN 'January' WHEN CurrentMonth = '02' THEN 'February' WHEN CurrentMonth = '03' THEN 'March' WHEN CurrentYear = '2000' THEN 'A month in the Year 2000' WHEN CurrentYear = '2001' THEN 'A month in the Year 2001' ELSE 'Not first three months of any year or a month in the Year 2000 or 2001' END;