목차

Search

  1. 서문
  2. 변환 언어
  3. 상수
  4. 연산자
  5. 변수
  6. 날짜
  7. 함수
  8. 사용자 지정 함수 작성
  9. 사용자 지정 함수 API 참조

변환 언어 참조

변환 언어 참조

IIF

IIF

사용자가 지정하는 두 값 중 하나를 조건의 결과에 따라 반환합니다.

구문

IIF(
condition
,
value1
[,
value2
] )
다음 테이블에는 이 명령의 인수가 설명되어 있습니다.
인수
필수/
선택 사항
설명
condition
필수
평가할 조건입니다. TRUE 또는 FALSE로 평가되는 유효한 모든 변환 식을 입력할 수 있습니다.
value1
필수
이진을 제외한 모든 데이터 유형. 조건이 TRUE일 경우 반환할 값입니다. 반환 값은 항상 사용자가 이 인수에 지정한 데이터 유형의 값입니다. 다른 IIF 식을 포함하여 유효한 모든 변환 식을 입력할 수 있습니다.
value2
선택 사항
이진을 제외한 모든 데이터 유형. 조건이 FALSE일 경우 반환할 값입니다. 다른 IIF 식을 포함하여 유효한 모든 변환 식을 입력할 수 있습니다.
일부 시스템의 조건부 함수와 달리 IIF 함수에서는 FALSE(
value2
) 조건이 필수가 아닙니다.
value2
를 생략한 경우 조건이 FALSE이면 다음이 반환됩니다.
  • value1
    이 숫자 데이터 유형인 경우 0이 반환됩니다.
  • value1
    이 문자열 데이터 유형인 경우 빈 문자열이 반환됩니다.
  • value1
    이 날짜/시간 데이터 유형인 경우 NULL이 반환됩니다.
예를 들어 다음 식에는 FALSE 조건이 포함되어 있지 않고
value1
이 문자열 데이터 유형이므로
PowerCenter 통합 서비스
가 FALSE로 평가되는 각 행에 대해 빈 문자열을 반환합니다.
IIF( SALES > 100, EMP_NAME )
SALES
EMP_NAME
RETURN VALUE
150
John Smith
John Smith
50
Pierre Bleu
''
(empty string)
120
Sally Green
Sally Green
NULL
Greg Jones
''
(empty string)

반환 값

조건이 TRUE이면
value1
이 반환됩니다.
조건이 FALSE이면
value2
가 반환됩니다.
예를 들어 다음 식에는 FALSE 조건 NULL이 포함되므로
PowerCenter 통합 서비스
가 FALSE로 평가되는 각 행에 대해 NULL을 반환합니다.
IIF( SALES > 100, EMP_NAME, NULL )
SALES
EMP_NAME
RETURN VALUE
150
John Smith
John Smith
50
Pierre Bleu
NULL
120
Sally Green
Sally Green
NULL
Greg Jones
NULL
데이터에 다중 바이트 문자가 포함되고 조건 인수가 문자열 데이터를 비교하는 경우 반환 값은
PowerCenter 통합 서비스
의 코드 페이지 및 데이터 이동 모드에 따라 다릅니다.

IIF 및 데이터 유형

IIF를 사용하는 경우 반환 값의 데이터 유형은 전체 자릿수가 가장 큰 결과의 데이터 유형과 동일합니다.
예를 들어 다음 식이 있습니다.
IIF( SALES < 100, 1, .3333 )
TRUE 결과(1)는 정수이고 FALSE 결과(.3333)는 10진수입니다. 10진수 데이터 유형은 전체 자릿수가 정수보다 많으므로 반환 값의 데이터 유형은 항상 10진수가 됩니다.
많은 전체 자릿수 모드에서 세션을 실행할 때 최소 1개의 결과가 배정밀도인 경우 반환 값의 데이터 유형은 배정밀도입니다.

IIF의 특수한 사용

중첩된 IIF 문을 사용하여 여러 조건을 테스트합니다. 다음 예는 다양한 조건을 테스트하고 매출이 0 또는 음수일 경우 0을 반환합니다.
IIF( SALES > 0, IIF( SALES < 50, SALARY1, IIF( SALES < 100, SALARY2, IIF( SALES < 200, SALARY3, BONUS))), 0 )
이 논리에 가독성을 높이는 설명을 추가할 수 있습니다.
IIF( SALES > 0, --then test to see if sales is between 1 and 49:   IIF( SALES < 50,    --then return SALARY1       SALARY1,       --else test to see if sales is between 50 and 99:          IIF( SALES < 100,           --then return              SALARY2,              --else test to see if sales is between 100 and 199:                 IIF( SALES < 200,                 --then return                    SALARY3,                   --else for sales over 199, return                      BONUS)               )            ), --else for sales less than or equal to zero, return       0)
IIF를 업데이트 전략에 사용합니다. 예:
IIF( ISNULL( ITEM_NAME ), DD_REJECT, DD_INSERT)

IIF의 대체 함수

DECODE는 많은 경우에 IIF 대신 사용됩니다. DECODE는 가독성을 개선합니다. 다음은 이전 섹션의 첫 번째 예를 사용하여 IIF 대신 DECODE를 사용하는 방법을 보여 줍니다.
DECODE( TRUE,    SALES > 0 and SALES < 50, SALARY1,    SALES > 49 AND SALES < 100, SALARY2,    SALES > 99 AND SALES < 200, SALARY3,    SALES > 199, BONUS)
IIF 대신 필터 변환을 사용하면 세션 성능을 극대화할 수 있습니다.