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

Barbara Streisand
Lepaskan: 2024-11-03 03:34:30
asal
467 orang telah melayarinya

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'
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan