SQL Engine Reference (v11)

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 になります。

666

次の例で、10 は SMALLINT として扱われ、ResultType (SQL_SMALLINT, SQL_VARCHAR) は SQL_SMALLINT になります。したがって、結果の型は SQL_SMALLINT になります。

SELECT COALESCE(10, 'abc' + 'def') 

最初のパラメーターは 10 で、この値は結果の型の SQL_SMALLINT へ変換できます。そのため、この例の戻り値は 10 になります。


CLOSE

COMMIT