Cara Mengendalikan Nilai Null dalam Fungsi SUM MySQL dengan COALESCE
Apabila melakukan pengiraan SUM dalam MySQL, ia boleh menjadi mencabar untuk mengendalikan senario di mana tiada nilai memenuhi kriteria yang ditentukan, menghasilkan output NULL. Untuk menangani isu ini, MySQL menyediakan fungsi COALESCE, yang menawarkan cara mudah untuk menentukan nilai pulangan lalai sekiranya nilai NULL berlaku.
Pertimbangkan fungsi MySQL berikut:
SELECT SUM(Column_1) FROM Table WHERE Column_2 = 'Test'
Jika tiada entri dalam Column_2 mengandungi teks 'Test', fungsi ini akan mengembalikan NULL. Walau bagaimanapun, dalam beberapa kes, adalah lebih baik untuk mengembalikan 0 dan bukannya NULL apabila tiada nilai ditemui.
Untuk mencapai ini, kita boleh menggunakan fungsi COALESCE dalam pengiraan SUM, seperti yang ditunjukkan di bawah:
SELECT COALESCE(SUM(column),0) FROM table WHERE ...
Dengan menentukan 0 sebagai nilai lalai dalam fungsi COALESCE, kami menggantikan mana-mana nilai NULL dalam pengiraan SUM dengan 0 dengan berkesan, memastikan bahawa hasilnya sentiasa integer (walaupun tiada nilai memenuhi kriteria SUM).
Maklumat Tambahan
Fungsi COALESCE adalah serba boleh dan boleh digunakan dalam pelbagai senario di luar pengendalian nilai NULL dalam pengiraan jumlah. Ia amat berguna dalam situasi di mana anda perlu memberikan nilai sandaran untuk data yang hilang atau tidak lengkap.
Untuk menggambarkan penggunaan dan faedah COALESCE dengan lebih lanjut, pertimbangkan contoh jadual berikut dengan jenis data yang berbeza-beza:
Menggunakan COALESCE berfungsi dalam pertanyaan yang mengira jumlah nilai dalam jadual ini, kami boleh memastikan hasil yang konsisten walaupun terdapat nol:
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
Hasil pertanyaan ini adalah seperti 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 |
Seperti yang terbukti daripada keputusan, COALESCE memastikan bahawa pengiraan SUM sentiasa mengembalikan 0 untuk jadual baz, dengan semua nilai adalah NULL, dan menyediakan jumlah jangkaan 21 untuk tables foo dan bar.
Atas ialah kandungan terperinci Bagaimanakah anda mengendalikan nilai nol dalam fungsi SUM MySQL dengan COALESCE?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!