coalesce関数は、
引数の値を順番に見ていって、最初にnullでなかった値を返す関数。
Tsurugi 1.0.0以降。
coalesce(値1, 値2, …)
全ての値がnullだったらnullを返す。
以下の式と同等。
case when 値1 is not null then 値1 when 値2 is not null then 値2 … else null end
create table test ( value1 int, value2 int, value3 int ); insert into test values (1, 2, 3), (1, 2, null), (1, null, 3), (1, null, null), (null, 2, 3), (null, 2, null), (null, null, 3), (null, null, null);
tgsql> select coalesce(value1, value2, value3), * from test; [@#0: INT4, value1: INT4, value2: INT4, value3: INT4] [1, 1, 2, 3] [1, 1, 2, null] [1, 1, null, 3] [1, 1, null, null] [2, null, 2, 3] [2, null, 2, null] [3, null, null, 3] [null, null, null, null] (8 rows)
tgsql> select coalesce(value1, value2, value3, 9), * from test; -- 末尾に固定値を書くと、全てがnullの場合にその値が返る
[@#0: INT8, value1: INT4, value2: INT4, value3: INT4]
[1, 1, 2, 3]
[1, 1, 2, null]
[1, 1, null, 3]
[1, 1, null, null]
[2, null, 2, 3]
[2, null, 2, null]
[3, null, null, 3]
[9, null, null, null]
(8 rows)