카테고리:

조건식 함수

COALESCE

인자 중 첫 번째 NULL이 아닌 식을 반환하거나, 모든 인자가 NULL이면 NULL을 반환합니다.

구문

COALESCE( <expr1> , <expr2> [ , ... , <exprN> ] )
Copy

사용법 노트

  • Snowflake는 인자가 호환되도록 하기 위해 암시적 변환 <label-when_coercion_occurs>`을 수행합니다. 예를 들어, 입력 식 중 하나가 숫자 유형인 경우 반환 유형도 숫자 유형입니다. 즉, :code:`SELECT COALESCE(‘17’, 1);`은 먼저 VARCHAR 값 :code:’17’`을 NUMBER 값 :code:`17`로 변환한 후 첫 번째 NULL이 아닌 값을 반환합니다.

    변환이 불가능하면 암시적 변환이 실패합니다. 예를 들어, SELECT COALESCE('foo', 1);`은 VARCHAR :code:’foo’`를 NUMBER 값으로 변환할 수 없으므로 오류를 반환합니다.

    We recommend passing in arguments of the same type or explicitly converting arguments if needed.

  • 암시적 변환이 숫자가 아닌 값을 숫자 값으로 변환하는 경우 결과는 NUMBER(18,5) 유형의 값이 됩니다.

    상수가 아닌 숫자형 문자열 인자의 경우 NUMBER(18,5)가 숫자 값을 나타내기에 충분하지 않으면 해당 값을 나타낼 수 있는 형식으로 인자를 형 변환 해야 합니다.

데이터 정렬 세부 정보

  • The collation specifications of all input arguments must be compatible.

  • The comparisons follow the collation based on the input arguments’ collations and precedences.

  • The collation of the result of the function is the highest-precedence collation of the inputs.

다음 예에서는 3개 열에 있는 값 및 해당 3개의 열에 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;
Copy
+---------+---------+---------+-----------------+
| 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 |
+---------+---------+---------+-----------------+