Categorias:

Funções de expressão condicional

COALESCE

Retorna a primeira expressão não NULL entre seus argumentos, ou NULL se todos os seus argumentos forem NULL.

Sintaxe

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

Notas de uso

  • O Snowflake realiza a conversão implícita dos argumentos para torná-los compatíveis. Por exemplo, se uma das expressões de entrada for um tipo numérico, o tipo de retorno também será numérico. Ou seja, SELECT COALESCE('17', 1); primeiro converte o valor VARCHAR '17' no valor NUMBER 17 e, em seguida, retorna o primeiro valor não NULL.

    Quando a conversão não é possível, há uma falha na conversão implícita. Por exemplo, SELECT COALESCE('foo', 1); retorna um erro porque o valor VARCHAR 'foo' não pode ser convertido em um valor NUMBER.

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

  • Quando a conversão implícita converte um valor não numérico em numérico, o resultado é um valor do tipo NUMBER (18,5).

    Para argumentos de cadeia de caracteres numérica que não sejam constantes, se NUMBER(18,5) não for suficiente para representar o valor numérico, então converta o argumento para um tipo que possa representar o valor.

Detalhes do agrupamento

  • 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.

Exemplos

O exemplo a seguir mostra os valores em três colunas e depois o resultado quando a função COALESCE é aplicada às três colunas:

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