Di MySQL, apakah ada cara untuk mengatur bidang "total" menjadi nol jika bidang tersebut NULL?
Inilah yang saya miliki:
SELECT uo.order_id, uo.order_total, uo.order_status,
(SELECT SUM(uop.price * uop.qty)
FROM uc_order_products uop
WHERE uo.order_id = uop.order_id
) AS products_subtotal,
(SELECT SUM(upr.amount)
FROM uc_payment_receipts upr
WHERE uo.order_id = upr.order_id
) AS payment_received,
(SELECT SUM(uoli.amount)
FROM uc_order_line_items uoli
WHERE uo.order_id = uoli.order_id
) AS line_item_subtotal
FROM uc_orders uo
WHERE uo.order_status NOT IN ("future", "canceled")
AND uo.uid = 4172;
Data keluar dengan baik, kecuali bidang NULL seharusnya 0
.
Bagaimana saya bisa mengembalikan 0 untuk NULL di MySQL?
Anda bisa menggunakan
coalesce(column_name,0)
bukan hanyacolumn_name
. Thecoalesce
fungsi mengembalikan nilai non-NULL pertama dalam daftar.Saya harus menyebutkan bahwa fungsi per-baris seperti ini biasanya bermasalah untuk skalabilitas. Jika Anda berpikir bahwa basis data Anda mungkin menjadi ukuran yang layak, sering kali lebih baik menggunakan kolom tambahan dan pemicu untuk memindahkan biaya dari
select
keinsert/update
.Ini mengamortisasi biaya dengan asumsi database Anda lebih sering dibaca daripada yang tertulis (dan kebanyakan dari mereka adalah).
sumber
Tidak ada jawaban di atas yang lengkap untuk saya. Jika bidang Anda bernama
field
, maka pemilihnya harus yang berikut:Misalnya dalam kueri SELECT:
Semoga ini bisa membantu seseorang untuk tidak membuang waktu.
sumber
Anda dapat mencoba sesuatu seperti ini
Atribut X dianggap kosong jika itu adalah String kosong, jadi setelah itu Anda dapat mendeklarasikan sebagai nol, bukan nilai terakhir. Dalam kasus lain, itu akan tetap nilai aslinya.
Bagaimanapun, hanya untuk memberikan cara lain untuk melakukan itu.
sumber
Ya, fungsi IFNULL akan berfungsi untuk mencapai hasil yang Anda inginkan.
sumber