COALESCE
COALESCE スカラー関数は 2 つ以上の引数を取り、その式リストを左から調べて最初の非ヌル引数を返します。
構文
COALESCE (式, 式[, 式...])
式 ::= 任意の有効な式
戻り値の型
COALESCE 関数は、式リスト内のいずれかの式の値を返します。戻り値のデータ型の詳細な一覧については、
サポートされるデータ型の組み合わせと結果のデータ型を参照してください。
制限
この関数は少なくとも 2 つの引数を取ります。
COALESCE(10, 20)
無効:
COALESCE()
メモ: 無効な例では、解析時エラーが発生します。
COALESCE には少なくとも 2 つの引数がなければなりません。
式リストには、少なくとも 1 つはヌルでない引数が含まれている必要があります。
有効:
COALESCE (NULL, NULL, 20)
無効:
COALESCE (NULL, NULL, NULL)
メモ: 無効な例では、解析時エラーが発生します。
COALESCE のすべての引数を NULL 関数にすることはできません。
この関数は、式リストに指定するデータ型の組み合わせによってはサポートしていないものがあります。
たとえば、COALESCE では BINARY 型と VARCHAR 型を引数に持つことはできません。これらの型はどちらも他方へ暗黙的に型変換できないからです。
サポートされるデータ型の組み合わせと結果のデータ型
次の図は、サポートされているさまざまなデータ型の組み合わせの詳細を示すと同時に、それらを COALESCE 関数で用いた場合に結果として生じるデータ型の確認に役立ちます。
図 1 COALESCE でサポートされるデータ型の組み合わせとその結果
図表の要素 | 説明 |
| これらの型は COALESCE 関数で直接使用できます。結果はオペランド 2 の型になります。 |
| これらの型は COALESCE 関数で直接使用できます。結果はオペランド 1 の型になります。 |
空のセル | これらの型には互換性がありません。COALESCE で直接使用することはできません。明示的な CONVERT が必要です。 |
D | 結果は SQL_DOUBLE 型になります。 |
B | 結果は SIM_BCD 型になります。 |
I | 結果は SQL_INTEGER 型になります。 |
S | 結果は SQL_SMALLINT 型になります。 |
COALESCE 関数でサポートされていない型の組み合わせ(図で空のセルになっています)を使用すると、解析時エラーが発生します。
ODBC エラー:SQLSTATE = 01S01、ネイティブ エラー コード = 0
行のエラーです。
割り当てエラーです。
式の評価エラーです。
例
次の例で、10+2 は SMALLINT として扱われ、ResultType (SQL_SMALLINT, SQL_SMALLINT) は SQL_SMALLINT になります。したがって、結果の型は SQL_SMALLINT になります。
SELECT COALESCE(NULL,10 + 2,15,NULL)
最初のパラメーターはヌルです。2 番目の式は 12 と評価されます。この値はヌルでなく、結果の型の SQL_SMALLINT へ変換できます。そのため、この例の戻り値は 12 になります。
============
次の例で、10 は SMALLINT として扱われ、ResultType (SQL_SMALLINT, SQL_VARCHAR) は SQL_SMALLINT になります。したがって、結果の型は SQL_SMALLINT になります。
SELECT COALESCE(10, 'abc' + 'def')
最初のパラメーターは 10 で、この値は結果の型の SQL_SMALLINT へ変換できます。そのため、この例の戻り値は 10 になります。