1. PostgreSQL
null値を置換するにはCOALESCE関数を利用します。COALESCE関数はnullでない最初の引数を返します。
COALESCE(value [, ...])
SELECT COALESCE(col1, col2, 'is null')...
/*
col1がnullでない場合、col1が返ります。
col1がnullでcol2がnullでない場合、col2が返ります。
col1、col2の両方がnullの場合は'is null'が返ります。
*/
2. MySQL
null値を置換するにはIFNULL、COALESCE関数を利用します。
IFNULL関数はvalue1がnullでない場合はvalue1を返し、それ以外の場合はvalue2を返します。
IFNULL(value1, value2)
SELECT IFNULL(col1, 'is null')...
/*
col1がnullでない場合はcol1が返ります。
col1がnullの場合は'is null'が返ります。
*/
COALESCE関数はnullでない最初の引数を返します。
PostgreSQLのCOALESCE関数と同じです。
COALESCE(value [, ...])
SELECT COALESCE(col1, col2, 'is null')...
/*
col1がnullでない場合、col1が返ります。
col1がnullでcol2がnullでない場合、col2が返ります。
col1、col2の両方がnullの場合は'is null'が返ります。
*/
3. Oracle
null値を置換するには、NVL、COALESCE関数を利用します。
NVL関数はvalue1がnullでない場合はvalue1を返し、それ以外の場合はvalue2を返します。
MySQLのIFNULL関数と同じです。
NVL(value1, value2)
SELECT NVL(col1, 'is null')...
/*
col1がnullでない場合はcol1が返ります。
col1がnullの場合は'is null'が返ります。
*/
COALESCE関数はnullでない最初の引数を返します。
PostgreSQLのCOALESCE関数と同じです。
COALESCE(value [, ...])
SELECT COALESCE(col1, col2, 'is null')...
/*
col1がnullでない場合、col1が返ります。
col1がnullでcol2がnullでない場合、col2が返ります。
col1、col2の両方がnullの場合は'is null'が返ります。
*/
4. その他
- 互換性重視ならCOALESCE関数を使用する。
- MySqlのIFNULL関数とOracleのNVL関数は同じ。
- COALESCE関数はすべての値がnullならnullが返る。null値になってほしくない場合は引数の最後に定数を指定する。
- IFNULL関数とのNVL関数の引数がnullの場合はnullが返る。
- 定数を指定する場合は、カラムの型にあった値を指定する。(number → 0、text → ‘文字列’)
- null値を含んだカラムの並び替えについてはPostgreSQLとMySQLでnull値を含むカラムのソート方法を参照してください。