MySQL の SUM 関数を使用して NULL の代わりに '0' を取得する
MySQL で SUM 関数を使用して、データ内の値の合計を計算する場合列で、一致する値が見つからない場合、関数は NULL を返します。このような場合に関数に 0 を返させたい場合、この動作は問題となる可能性があります。
この問題を解決するには、COALESCE 関数を使用できます。 COALESCE は 2 つの引数を受け取ります。最初の引数は評価する式で、2 番目の引数は最初の引数が NULL の場合に返したい値です。
SUM 関数の場合、次の構文を使用できます。使用できます:
<code class="sql">SELECT COALESCE(SUM(Column_1), 0) FROM Table WHERE Column_2 = 'Test'</code>
この例では、SUM(Column_1) 式が評価されます。 Column_2 に一致する値が見つからない場合、式は NULL を返します。ただし、COALESCE 関数は、NULL ではなく、指定されたデフォルト値 0 を返します。
このアプローチにより、一致する値が見つからない場合でも、SUM 関数は常に数値を返すようになります。その結果、NULL 値を処理するときに発生する可能性のある潜在的な問題を回避できます。
追加情報:
COALESCE の仕組みをより包括的に理解するには、次を参照してください。次のシナリオを考えてみましょう: それぞれ異なるデータ型を持つ 3 つのテーブルが作成されました。
これらのテーブルに対して次のクエリを実行すると、COALESCE の機能が示されます。
<code class="sql">SELECT table_name, description, expected_sum, COALESCE(SUM(val), 0) AS actual_sum FROM ( SELECT 'foo' AS table_name, 'mixed null/non-null' AS description, 21 AS expected_sum, val FROM Table1 UNION ALL SELECT 'bar' AS table_name, 'all non-null' AS description, 21 AS expected_sum, val FROM Table2 UNION ALL SELECT 'baz' AS table_name, 'all null' AS description, 0 AS expected_sum, val FROM Table3 ) AS subquery GROUP BY table_name, description, expected_sum ORDER BY table_name, description;</code>
このクエリの結果は、データ型に関係なく、COALESCE によって SUM 関数が確実に数値を返し、MySQL アプリケーションでより柔軟で予測可能なデータ処理が可能になることを示しています。
以上がMySQL の SUM 関数が NULL ではなく「0」を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。