DECODE
DECODE
DECODE()는 선택 표현식(select expression)을 각 검색 표현식(search expression)과 순서대로 비교해요. 검색 표현식이 선택 표현식과 일치하는 즉시 해당하는 결과 표현식을 반환해요.
Snowflake의 DECODE는 데이터를 다른 인코딩으로 변환하는 PostgreSQL의 DECODE 함수와 달라요.
본문
문법
DECODE( <expr> , <search1> , <result1> [ , <search2> , <result2> ... ] [ , <default> ] )
인자
expr
'선택 표현식(select expression)'이에요. '검색 표현식들'이 이 선택 표현식과 비교되고, 일치하면 DECODE는 그 검색 표현식에 해당하는 결과를 반환해요. 선택 표현식은 일반적으로 열이지만, 서브쿼리, 리터럴 또는 다른 표현식일 수도 있어요.
searchN
검색 표현식들은 선택 표현식과 비교할 값을 나타내요. 이 검색 표현식 중 하나라도 일치하면 함수는 해당 결과를 반환해요. 여러 검색 표현식이 일치하면 첫 번째 일치의 결과만 반환돼요.
resultN
결과들은 검색 표현식 중 하나가 선택 표현식과 일치할 때 반환될 값이에요.
default
선택적인 기본값이 지정되고, 검색 표현식 중 어느 것도 선택 표현식과 일치하지 않으면 DECODE는 이 기본값을 반환해요.
사용 지침
-
CASE와 달리, 선택 표현식의 NULL 값은 검색 표현식의 NULL 값과 일치해요.
-
expr은UNION,INTERSECT,EXCEPT,MINUS같은 집합 연산자를 포함할 수 있어요. 집합 연산자를 사용할 때는 데이터 타입이 호환되는지 확인하세요. 자세한 내용은 집합 연산자(Set operators) 문서의 일반 사용 지침(General usage notes)을 참고하세요.
콜레이션 세부사항
-
선택 표현식과 검색 표현식들의 콜레이션 사양은 모두 호환되어야 해요.
-
함수에서 반환되는 값은 우선순위(precedence)가 가장 높은 콜레이션을 가진 결과의 콜레이션 사양을 유지해요.
예제
테이블을 만들고 행을 삽입:
CREATE TABLE d (column1 INTEGER);
INSERT INTO d (column1) VALUES
(1),
(2),
(NULL),
(4);
기본값 '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 |
+---------+---------------+
기본값이 없는 예제(일치하지 않는 값은 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 |
+---------+---------------+