SQLiteで最大値を取得しNULLを0にする方法

※当サイトではアフィリエイト広告を利用しています

SQLiteで特定のカラムの最大値を取得する際、NULLが含まれていると結果がNULLになる可能性があります。
例えば、incrementカラムの最大値を取得するには以下のSQLを使用できます。

SELECT MAX(increment) FROM your_table_name;

しかし、テーブル内のすべての値がNULLの場合、MAX(increment)はNULLを返します。
NULLではなく0を返したい場合は、COALESCE関数を組み合わせて次のように記述します。

SELECT COALESCE(MAX(increment), 0) AS max_increment
FROM your_table_name;

COALESCE関数とは?

COALESCE関数は、最初にNULLでない値を返す関数です。
つまり、MAX(increment)の結果がNULLでなければその値を返し、NULLならば0を返すようになります。

実際の動作例

idincrement
110
2NULL
320

この場合、MAX(increment)の結果は20になります。しかし、すべての行がNULLだった場合

idincrement
1NULL
2NULL

この場合、通常のMAX(increment)ではNULLになりますが、COALESCE(MAX(increment), 0)を使うことで0を返すことができます。

まとめ

SQLiteで最大値を取得する際にNULLを0にしたい場合は、以下のSQLを使うのがベストです。

SELECT COALESCE(MAX(increment), 0) AS max_increment FROM your_table_name;

これで、データがすべてNULLでも適切に0を返すことができます。

コメント