Katakanlah saya memiliki fungsi sederhana di MySQL:
SELECT SUM(Column_1)
FROM Table
WHERE Column_2 = 'Test'
Jika tidak ada entri dalam Column_
2 berisi teks 'Tes' maka fungsi ini kembali NULL
, sementara saya ingin mengembalikan 0.
Saya menyadari bahwa pertanyaan serupa telah diajukan beberapa kali di sini, tetapi saya belum dapat mengadaptasi jawaban untuk tujuan saya, jadi saya akan berterima kasih atas bantuan untuk menyelesaikan masalah ini.
Jawaban:
Gunakan
COALESCE
untuk menghindari hasil itu.Untuk melihatnya beraksi, silakan lihat biola sql ini: http://www.sqlfiddle.com/#!2/d1542/3/0
Informasi Lebih Lanjut:
Diberikan tiga tabel (satu dengan semua angka, satu dengan semua nol, dan satu dengan campuran):
SQL Fiddle
Pengaturan Skema MySQL 5.5.32 :
Pertanyaan 1 :
Hasil :
sumber
SUM
berfungsi sesuai keinginan,AVG
danCOUNT
dapat menghasilkan hasil yang berbeda saat menerimaNULL
Meminta Anda untuk menggunakanCOALESCE
seperti yang disarankan oleh @DarkSide, tergantung pada hasil yang Anda inginkan.Gunakan
IFNULL
atauCOALESCE
:Perbedaan di antara mereka adalah bahwa itu
IFNULL
adalah ekstensi MySQL yang mengambil dua argumen, danCOALESCE
merupakan fungsi SQL standar yang dapat mengambil satu atau lebih argumen. Ketika Anda hanya memiliki dua argumen menggunakanIFNULL
sedikit lebih cepat, meskipun di sini perbedaannya tidak signifikan karena hanya dipanggil sekali.sumber
IFNULL
atauCOALESCE
?? bisakah kamu menjelaskannya ??coalesce
.Tidak bisa mendapatkan persis apa yang Anda minta tetapi jika Anda menggunakan fungsi SUM agregat yang menyiratkan bahwa Anda mengelompokkan tabel.
Kueri berlaku untuk MYSQL seperti ini
sumber