DECODE 스칼라 함수

DECODE 함수는 결과적으로 리턴할 인수를 판별하기 위해 널(NULL) 값을 동등하게 처리하여 인수 간의 등식 비교를 수행합니다.

Read syntax diagramSkip visual syntax diagramDECODE(expression1 ,expression2,result-expression ,else-expression )

스키마는 SYSIBM입니다.

DECODE 함수는 각 expression2expression1과 비교합니다. expression1expression2와 동등한 경우, 또는 expression1expression2 모두 널(NULL)인 경우, 다음 result-expresssion의 값이 리턴됩니다. expression2expression1과 일치하지 않는 경우, else-expression의 값이 리턴됩니다. 그렇지 않으면, 널(NULL) 값이 리턴됩니다.

DECODE 함수는 널(NULL) 값의 처리를 제외한 CASE 표현식과 유사합니다.
  • expression1의 널(NULL) 값은 expression2의 해당 널(NULL) 값과 일치합니다.
  • NULL 키워드가 DECODE 함수에서 인수로서 사용되는 경우, 이는 적절한 데이터 유형에 대한 캐스트여야 합니다.
DECODE 표현식의 결과 유형을 판별하기 위한 규칙은 해당 CASE 표현식을 기반으로 합니다.

예:

  • 예제 1: DECODE 표현식
       DECODE (c1, 7, 'a', 6, 'b', 'c')
    는 다음 CASE 표현식과 동일한 결과를 달성합니다.
       CASE c1
         WHEN 7 THEN 'a'
         WHEN 6 THEN 'b'
         ELSE 'c'
       END
  • 예제 2: DECODE 표현식
       DECODE (c1, var1, 'a', var2, 'b')
    (여기서, c1, var1 및 var2의 값이 널(NULL) 값일 수 있음)는 다음 CASE 표현식과 동일한 결과를 달성합니다.
       CASE
         WHEN c1 = var1 OR (c1 IS NULL AND var1 IS NULL) THEN 'a'
         WHEN c1 = var2 OR (c1 IS NULL AND var2 IS NULL) THEN 'b'
         ELSE NULL
       END
  • 예제 3: 다음 쿼리도 고려하십시오.
       SELECT ID, DECODE(STATUS, 'A', 'Accepted',
                                 'D', 'Denied',
                                 CAST(NULL AS VARCHAR(1)), 'Unknown',
                                 'Other')
       FROM CONTRACTS
    CASE 표현식을 사용하는 동일한 명령문이 있습니다.
       SELECT ID,
         CASE
           WHEN STATUS = 'A' THEN 'Accepted'
           WHEN STATUS = 'D' THEN 'Denied'
           WHEN STATUS IS NULL THEN 'Unknown'
           ELSE 'Other'
         END
       FROM CONTRACTS