Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengembalikan \'0\' Daripada NULL Apabila Menggunakan Fungsi SUM MySQL pada Set Data Kosong?

Bagaimana untuk Mengembalikan \'0\' Daripada NULL Apabila Menggunakan Fungsi SUM MySQL pada Set Data Kosong?

Barbara Streisand
Barbara Streisandasal
2024-11-03 03:34:30557semak imbas

How to Return '0' Instead of NULL When Using MySQL's SUM Function on Empty Datasets?

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:

  • Jadual 'foo' mengandungi gabungan nilai NULL dan bukan NULL.
  • 'bar' jadual hanya mengandungi nilai bukan NULL.
  • Jadual 'baz' secara eksklusif mengandungi nilai NULL.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn