DECODE 스칼라 함수
DECODE 함수는 결과적으로 리턴할 인수를 판별하기 위해 널(NULL) 값을 동등하게 처리하여 인수 간의 등식 비교를 수행합니다.
스키마는 SYSIBM입니다.
DECODE 함수는 각 expression2를 expression1과 비교합니다. expression1이 expression2와 동등한 경우, 또는 expression1과 expression2 모두 널(NULL)인 경우, 다음 result-expresssion의 값이 리턴됩니다. expression2가 expression1과 일치하지 않는 경우, else-expression의 값이 리턴됩니다. 그렇지 않으면, 널(NULL) 값이 리턴됩니다.
DECODE 함수는 널(NULL) 값의 처리를 제외한
CASE 표현식과 유사합니다.
- expression1의 널(NULL) 값은 expression2의 해당 널(NULL) 값과 일치합니다.
- NULL 키워드가 DECODE 함수에서 인수로서 사용되는 경우, 이는 적절한 데이터 유형에 대한 캐스트여야 합니다.
예:
- 예제 1: DECODE 표현식
는 다음 CASE 표현식과 동일한 결과를 달성합니다.DECODE (c1, 7, 'a', 6, 'b', 'c')CASE c1 WHEN 7 THEN 'a' WHEN 6 THEN 'b' ELSE 'c' END - 예제 2: DECODE 표현식
(여기서, c1, var1 및 var2의 값이 널(NULL) 값일 수 있음)는 다음 CASE 표현식과 동일한 결과를 달성합니다.DECODE (c1, var1, 'a', var2, 'b')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: 다음 쿼리도 고려하십시오.
CASE 표현식을 사용하는 동일한 명령문이 있습니다.SELECT ID, DECODE(STATUS, 'A', 'Accepted', 'D', 'Denied', CAST(NULL AS VARCHAR(1)), 'Unknown', 'Other') FROM CONTRACTSSELECT ID, CASE WHEN STATUS = 'A' THEN 'Accepted' WHEN STATUS = 'D' THEN 'Denied' WHEN STATUS IS NULL THEN 'Unknown' ELSE 'Other' END FROM CONTRACTS
