Cara Mendapatkan '0' daripada Fungsi SUM MySQL Apabila Tiada Nilai Wujud
Fungsi SUM dalam MySQL menawarkan cara yang mudah untuk mengagregatkan berangka nilai. Walau bagaimanapun, apabila tiada baris yang sepadan ditemui semasa pertanyaan, fungsi SUM biasanya mengembalikan nilai NULL. Untuk sesetengah kes penggunaan, mungkin lebih wajar untuk mengembalikan '0' dan bukannya NULL.
Menggunakan COALESCE untuk Menyelesaikan Isu
Penyelesaian kepada masalah ini terletak pada fungsi COALESCE. COALESCE membenarkan anda untuk menentukan nilai lalai untuk dikembalikan apabila argumen pertama dinilai kepada NULL.
Pertimbangkan contoh berikut:
SELECT COALESCE(SUM(Column_1),0) FROM Table WHERE Column_2 = 'Test'
Dalam pertanyaan ini, COALESCE membungkus fungsi SUM. Jika JUMLAH Lajur_1 untuk baris di mana Lajur_2 bersamaan dengan 'Ujian' mengembalikan nilai NULL, COALESCE sebaliknya akan memberikan '0'.
Demonstrasi dan Maklumat Lanjut
Lawati http ://www.sqlfiddle.com/#!2/d1542/3/0 untuk demonstrasi langsung penyelesaian.
Untuk menyelidiki lebih mendalam nuansa COALESCE, pertimbangkan senario berikut yang melibatkan tiga jadual dengan berbeza pengagihan nilai:
Dengan menggunakan pertanyaan berikut:
SELECT 'foo' as table_name, 'mixed null/non-null' as description, 21 as expected_sum, COALESCE(SUM(val), 0) as actual_sum FROM foo UNION ALL SELECT 'bar' as table_name, 'all non-null' as description, 21 as expected_sum, COALESCE(SUM(val), 0) as actual_sum FROM bar UNION ALL SELECT 'baz' as table_name, 'all null' as description, 0 as expected_sum, COALESCE(SUM(val), 0) as actual_sum FROM baz
Anda akan memperoleh keputusan berikut:
TABLE_NAME | DESCRIPTION | EXPECTED_SUM | ACTUAL_SUM |
---|---|---|---|
foo | mixed null/non-null | 21 | 21 |
bar | all non-null | 21 | 21 |
baz | all null | 0 | 0 |
Sebagaimana anda boleh perhatikan, fungsi COALESCE mengembalikan '0' dengan cekap untuk jadual 'baz', dengan semua nilai adalah NULL.
Atas ialah kandungan terperinci Bagaimana untuk Mengembalikan \'0\' Daripada NULL Apabila Menggunakan Fungsi SUM MySQL pada Set Data Kosong?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!