Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengendalikan Medan NULL dalam Pengiraan MySQL?

Bagaimana untuk Mengendalikan Medan NULL dalam Pengiraan MySQL?

Barbara Streisand
Lepaskan: 2025-01-04 07:24:34
asal
546 orang telah melayarinya

How to Handle NULL Fields in MySQL Calculations?

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

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

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!

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