カテゴリ:

条件式関数

COALESCE

引数内の最初の非NULL 式を返します。またはすべての引数が NULL の場合は NULLを返します。

構文

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

使用上の注意

  • Snowflakeは引数の 暗黙的な変換 を実行して互換性を持たせます。たとえば、入力式の1つが数値型の場合、戻り型も数値型になります。つまり SELECT COALESCE('17', 1); は最初に VARCHAR 値の '17' を NUMBER 値の 17 に変換し、最初の非 NULL 値を返します。

    変換が不可能な場合は、暗黙的な変換は失敗します。たとえば、 SELECT COALESCE('foo', 1); はエラーを返します。これは VARCHAR 値の '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つの列の値と、COALESCE 関数を3つの列に適用する場合の結果を示しています。

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