COALESCE
COALESCE (첫 비-NULL 값)
인자 중 첫 번째 비-NULL 표현식을 반환하고, 모든 인자가 NULL이면 NULL을 반환해요.
본문
구문
COALESCE( <expr1> , <expr2> [ , ... , <exprN> ] )
사용 시 참고 사항
-
Snowflake는 인자를 호환되도록 암시적 변환(implicit conversion)을 수행해요. 예를 들어 입력 표현식 중 하나가 숫자 타입이면 반환 타입도 숫자 타입이 돼요. 즉,
SELECT COALESCE('17', 1);은 먼저 VARCHAR 값'17'을 NUMBER 값17로 변환한 다음, 첫 번째 비-NULL 값을 반환해요.변환이 불가능하면 암시적 변환이 실패해요. 예를 들어
SELECT COALESCE('foo', 1);은 VARCHAR 값'foo'를 NUMBER 값으로 변환할 수 없기 때문에 오류를 반환해요.같은 타입의 인자를 전달하거나, 필요하다면 인자를 명시적으로 변환해 전달하는 것을 권장해요.
-
암시적 변환이 비-숫자 값을 숫자 값으로 변환하면, 결과는 NUMBER(18,5) 타입의 값이 돼요.
상수가 아닌 숫자 문자열 인자의 경우, NUMBER(18,5)가 숫자 값을 표현하기에 부족하면 그 값을 표현할 수 있는 타입으로 인자를 캐스팅하세요.
정렬 규칙(collation) 세부 사항
-
모든 입력 인자의 정렬 규칙 사양은 서로 호환되어야 해요.
-
비교는 입력 인자의 정렬 규칙과 우선순위에 기반해 이루어져요.
-
함수 결과의 정렬 규칙은 입력 중 우선순위가 가장 높은 정렬 규칙이에요.
예시
다음 예시는 세 열의 값과, COALESCE 함수를 그 세 열에 적용한 결과를 보여줘요.
SELECT column1,
column2,
column3,
COALESCE(column1, column2, column3) AS coalesce_result
FROM (values
(1, 2, 3 ),
(null, 2, 3 ),
(null, null, 3 ),
(null, null, null),
(1, null, 3 ),
(1, null, null),
(1, 2, null)
) v;
+---------+---------+---------+-----------------+
| COLUMN1 | COLUMN2 | COLUMN3 | COALESCE_RESULT |
|---------+---------+---------+-----------------|
| 1 | 2 | 3 | 1 |
| NULL | 2 | 3 | 2 |
| NULL | NULL | 3 | 3 |
| NULL | NULL | NULL | NULL |
| 1 | NULL | 3 | 1 |
| 1 | NULL | NULL | 1 |
| 1 | 2 | NULL | 1 |
+---------+---------+---------+-----------------+