NULL Field Handling dalam MySQL
Apabila mendapatkan semula data daripada pangkalan data MySQL, sering dijumpai bahawa sesetengah medan mungkin mengandungi nilai NULL. Ini boleh menimbulkan masalah jika anda perlu melakukan pengiraan atau manipulasi yang memerlukan data berangka.
Masalah: NULL Medan dalam Pengiraan
Pertimbangkan pertanyaan SQL berikut:
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;
Pertanyaan ini mendapatkan semula data daripada berbilang jadual dan mengira beberapa subjumlah. Walau bagaimanapun, jika mana-mana subjumlah mengandungi nilai NULL, keseluruhan pengiraan akan terjejas, berpotensi membawa kepada keputusan yang salah.
Penyelesaian: Fungsi IFNULL()
MySQL menyediakan fungsi IFNULL() untuk mengendalikan nilai NULL. Fungsi ini mengambil dua hujah: ungkapan untuk menilai dan nilai untuk dikembalikan jika ungkapan itu NULL. Sebagai contoh, pertanyaan berikut menggunakan IFNULL() untuk memastikan bahawa subjumlah sentiasa ditetapkan kepada sifar jika ia adalah NULL:
SELECT uo.order_id, uo.order_total, uo.order_status, IFNULL((SELECT SUM(uop.price * uop.qty) FROM uc_order_products uop WHERE uo.order_id = uop.order_id), 0) AS products_subtotal, IFNULL((SELECT SUM(upr.amount) FROM uc_payment_receipts upr WHERE uo.order_id = upr.order_id), 0) AS payment_received, IFNULL((SELECT SUM(uoli.amount) FROM uc_order_line_items uoli WHERE uo.order_id = uoli.order_id), 0) AS line_item_subtotal FROM uc_orders uo WHERE uo.order_status NOT IN ("future", "canceled") AND uo.uid = 4172;
Dengan menggunakan IFNULL(), anda boleh memastikan bahawa semua subjumlah adalah sah nilai berangka, walaupun jadual yang sepadan mengandungi data NULL. Ini membolehkan anda melakukan pengiraan dan menghasilkan keputusan yang tepat.
Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Medan NULL dalam Pengiraan MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!