SQLite | SQLite関数 | 値がNULLの場合に別の値を返す(ifnull関数、coalesce関数)
ifnull関数は第1引数がNULLの場合に第2引数を返します。coalesce関数も複数の引数に対して同様に動作します。ここでは両方の使い方を説明します。
ifnull関数とcoalesce関数の使い方
ifnull関数は第1引数がNULLの場合に第2引数を返します。
ifnull(値1, 値2)
coalesce関数は、最初のNULLでない引数を返します。先行する引数がすべてNULLの場合は最後の引数を返します。
coalesce(値1, 値2, ..., 値N)
ifnull関数は、引数が2つのcoalesce関数と同じです。
–
例で使用するテーブルを作成します。
create table user (id integer, name text, address text);
sqlite> create table user (id integer, name text, address text);
sqlite>
データを追加します。
insert into user values (1, 'devkuma', 'Seoul');
insert into user values (2, 'kimkc', NULL);
insert into user values (3, 'araikuma', 'Busan');
insert into user values (4, NULL, 'Paju');
insert into user values (5, NULL, NULL);
sqlite> insert into user values (1, 'devkuma', 'Seoul');
sqlite> insert into user values (2, 'kimkc', NULL);
sqlite> insert into user values (3, 'araikuma', 'Busan');
sqlite> insert into user values (4, NULL, 'Paju');
sqlite> insert into user values (5, NULL, NULL);
sqlite>
ifnull関数で、nameがNULLでなければその値を、NULLであれば'NoName'を返します。
select id, ifnull(name, 'NoName') from user;
sqlite> .mode column
sqlite> .header on
sqlite>
sqlite> select id, ifnull(name, 'NoName') from user;
id ifnull(name, 'NoName')
---------- ----------------------
1 devkuma
2 kimkc
3 araikuma
4 NoName
5 NoName
sqlite>
nameに値がある行はその値を返し、NULLの行は指定した代替値を返します。
coalesce関数で、name、addressの順に値を返し、両方がNULLの場合は'NoName'を返します。
select id, coalesce(name, address, 'NoName') from user;
sqlite> select id, coalesce(name, address, 'NoName') from user;
id coalesce(name, address, 'NoName')
---------- ---------------------------------
1 devkuma
2 kimkc
3 araikuma
4 Paju
5 NoName
sqlite>
最初のNULLでない値が返され、両方の列がNULLの場合は指定した代替値が返されます。