nullif関数は、特定の値をnullに変換する関数。
Tsurugi 1.0.0以降。
nullif(値, 比較する値)
具体的には、第1引数と第2引数が等しかったらnullを返し、そうでなかったら第1引数をそのまま返す。
以下の式と同等。
case when 値 = 比較する値 then null else 値 end
create table test ( value varchar(10) ); insert into test values('abc'), ('def'), ('error'), (null);
tgsql> select value, nullif(value, 'error') from test order by value; [value: CHARACTER, @#1: CHARACTER] [null, null] [abc, abc] [def, def] [error, null] (4 rows)
0除算するとエラーになるが、nullで割る場合はnullが返るのでエラーにならない、というテクニックがあるらしい。
create table test ( value1 int, value2 int ); insert into test values(10, 2), (10, 0);
tgsql> select *, value1 / nullif(value2, 0) from test; [value1: INT4, value2: INT4, @#2: INT4] [10, 2, 5] [10, 0, null] (2 rows)