카테고리:

조건식 함수

DECODE

select 식을 각 검색 식과 순서대로 비교합니다. 검색 식이 선택 식과 일치하는 즉시, 해당 결과 식이 반환됩니다.

참고

Snowflake의 DECODE는 데이터를 다른 인코딩으로 변환하는 PostgreSQL의 DECODE 함수와는 다릅니다.

구문

DECODE( <expr> , <search1> , <result1> [ , <search2> , <result2> ... ] [ , <default> ] )
Copy

인자

expr

이는 “선택 식”입니다. “검색 식”은 이 선택 식과 비교되며, 일치 항목이 있는 경우 DECODE 는 그 검색 식에 해당하는 결과를 반환합니다. 선택 식은 일반적으로 열이지만, 하위 쿼리, 리터럴 또는 기타 식일 수 있습니다.

searchN

검색 식은 선택 식과 비교할 값을 나타냅니다. 이러한 검색 식 중 하나가 일치하는 경우, 함수는 해당 result 를 반환합니다. 둘 이상의 검색 식이 일치하는 경우, 첫 번째 일치의 결과만 반환됩니다.

resultN

결과는 검색 식 중 하나가 선택 식과 일치하는 경우 반환되는 값입니다.

default

선택적 기본값이 지정되고, 검색 식이 선택 식과 일치하지 않는 경우, DECODE 는 이 기본값을 반환합니다.

사용법 노트

  • CASE 와 달리 선택 식의 NULL 값은 검색 식의 NULL 값과 일치합니다.

  • expr 에는 UNION, INTERSECT, EXCEPT, MINUS 와 같은 세트 연산자가 포함될 수 있습니다. 세트 연산자를 사용할 때 데이터 타입이 호환되는지 확인하십시오. 자세한 내용은 세트 연산자 항목의 일반적인 사용법 노트 를 참조하십시오.

데이터 정렬 세부 정보

  • 선택 식과 검색 식의 데이터 정렬 사양은 모두 호환 가능해야 합니다.

  • 함수에서 반환된 값은 우선 순위 가 가장 높은 데이터 정렬이 있는 결과의 데이터 정렬 사양을 유지합니다.

테이블을 만들고 행을 삽입합니다.

CREATE TABLE d (column1 INTEGER);
INSERT INTO d (column1) VALUES 
    (1),
    (2),
    (NULL),
    (4);
Copy

기본값이 'other' 인 예(NULL은 NULL임에 유의):

SELECT column1, decode(column1, 
                       1, 'one', 
                       2, 'two', 
                       NULL, '-NULL-', 
                       'other'
                      ) AS decode_result
    FROM d;
+---------+---------------+
| COLUMN1 | DECODE_RESULT |
|---------+---------------|
|       1 | one           |
|       2 | two           |
|    NULL | -NULL-        |
|       4 | other         |
+---------+---------------+
Copy

기본값이 없는 예(일치하지 않는 값은 NULL을 반환함에 유의):

SELECT column1, decode(column1, 
                       1, 'one', 
                       2, 'two', 
                       NULL, '-NULL-'
                       ) AS decode_result
    FROM d;
+---------+---------------+
| COLUMN1 | DECODE_RESULT |
|---------+---------------|
|       1 | one           |
|       2 | two           |
|    NULL | -NULL-        |
|       4 | NULL          |
+---------+---------------+
Copy