Wie gehe ich mit NULL-Feldern in MySQL-Berechnungen um?
Jan 04, 2025 am 07:24 AMNULL-Feldbehandlung in MySQL
Beim Abrufen von Daten aus einer MySQL-Datenbank kommt es häufig vor, dass einige Felder NULL-Werte enthalten können. Dies kann ein Problem darstellen, wenn Sie Berechnungen oder Manipulationen durchführen müssen, die numerische Daten erfordern.
Das Problem: NULL-Felder in Berechnungen
Betrachten Sie die folgende SQL-Abfrage:
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;
Diese Abfrage ruft Daten aus mehreren Tabellen ab und berechnet mehrere Zwischensummen. Wenn jedoch eine der Zwischensummen NULL-Werte enthält, wird die gesamte Berechnung beeinträchtigt, was möglicherweise zu falschen Ergebnissen führt.
Die Lösung: Funktion IFNULL()
MySQL stellt die Funktion IFNULL() zur Verarbeitung von NULL-Werten bereit. Diese Funktion benötigt zwei Argumente: den auszuwertenden Ausdruck und den zurückzugebenden Wert, wenn der Ausdruck NULL ist. Die folgende Abfrage verwendet beispielsweise IFNULL(), um sicherzustellen, dass die Zwischensummen immer auf Null gesetzt werden, wenn sie NULL sind:
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;
Durch die Verwendung von IFNULL() können Sie sicherstellen, dass alle Zwischensummen gültig sind numerische Werte, auch wenn die entsprechenden Tabellen NULL-Daten enthalten. Dadurch können Sie Berechnungen durchführen und genaue Ergebnisse erzielen.
Das obige ist der detaillierte Inhalt vonWie gehe ich mit NULL-Feldern in MySQL-Berechnungen um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Reduzieren Sie die Verwendung des MySQL -Speichers im Docker

Wie verändern Sie eine Tabelle in MySQL mit der Änderungstabelleanweisung?

So lösen Sie das Problem der MySQL können die gemeinsame Bibliothek nicht öffnen

Führen Sie MySQL in Linux aus (mit/ohne Podman -Container mit Phpmyadmin)

Ausführen mehrerer MySQL-Versionen auf macOS: Eine Schritt-für-Schritt-Anleitung

Wie sichere ich mich MySQL gegen gemeinsame Schwachstellen (SQL-Injektion, Brute-Force-Angriffe)?

Wie konfiguriere ich die SSL/TLS -Verschlüsselung für MySQL -Verbindungen?
