COALESCE

COALESCE (첫 비-NULL 값)

인자 중 첫 번째 비-NULL 표현식을 반환하고, 모든 인자가 NULL이면 NULL을 반환해요.

출처: Snowflake SQL Reference - COALESCE

본문

구문

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 |
+---------+---------+---------+-----------------+

더 알아보기