Anweisungen zur verschachtelten Verwendung von MySQL ifnull

Anweisungen zur verschachtelten Verwendung von MySQL ifnull

Verschachtelte Verwendung von MySQL ifnull

Ich habe online gesucht, ob es eine Möglichkeit gibt, ifnull zu verschachteln, aber anscheinend hat niemand diese Verwendung erwähnt: Die meisten prüfen einfach, ob ein Feld leer ist, und ersetzen es dann durch einen anderen Wert.

Das heißt:

wähle ifnull(a,b) aus A;

Das Problem, auf das ich gestoßen bin, besteht darin, dass es zwei Felder gibt und das Szenario wahrscheinlich folgendermaßen aussieht:

Jedes Geschäft verfügt über zwei Rabattmethoden: vip_discount und simple_discount, die nach dem in der Datenbank gefundenen Rabattfeld benannt sind; vip_discount ist die wichtigste.

Das bedeutet, dass, wenn vip_discount nicht leer ist, sein Wert zurückgegeben wird. Wenn sein Wert leer ist, muss weiter ermittelt werden, ob das Feld simple_discount leer ist. Wenn es nicht leer ist, wird der Wert von simple_discount zurückgegeben, andernfalls wird eine leere Zeichenfolge zurückgegeben.

Hier habe ich überlegt, ob ich verschachtelte ifnull nutzen kann um zu ermitteln, ob ich mein Ziel erreichen kann.

Nachdem ich lange im Internet gesucht und keine ähnlichen Blogs gefunden hatte, dachte ich, ich könnte es selbst versuchen:

Wählen Sie ifnull(vip_discount,ifnull(simple_discount,"")) als Rabatt von A;

Damit ist das Problem gelöst. Auf diese SQL-Anweisung können auch bedingte Anweisungen folgen, um andere bedingte Abfragen zu ergänzen.

Die Fallstricke von MySQL ifnull

Schauen wir uns ohne weitere Umschweife das SQL an:

AKTUALISIEREN
    lb_user u
SETZEN Sie u.Benutzerebene = (
    WÄHLEN
        IFNULL(Level-ID, u.Benutzerebene)
    VON lb_user_level
    WO `status` = 1 UND levelid > u.user_level
    UND (Upgrade-Score < u. empirisch ODER Upgrade-Gesamtgeld < u. Gesamtverbrauchsgeld)
    ORDER BY Ebenen-ID DESC
    GRENZE 1
);

Auf den ersten Blick scheint diese SQL-Anweisung in Ordnung zu sein und wird erfolgreich ausgeführt. Bei erneuter Ausführung schlägt sie jedoch fehl. Der Grund dafür ist, dass die Daten unter den aktuellen Bedingungen nicht abgerufen werden können und die zurückgegebenen Daten leer sind. Beachten Sie, dass die Daten leer sind, d. h. es sind keine Daten vorhanden, nicht dass die Daten vorhanden sind, sondern dass das Feld leer ist. Nach der Untersuchung wird die SQL-Anweisung wie folgt geändert:

AKTUALISIEREN
    lb_user u
SETZEN Sie u.Benutzerebene = IFNULL((
    WÄHLEN
        Ebenen-ID
    VON lb_user_level
    WO `status` = 1 UND levelid > u.user_level
    UND (Upgrade-Score < u. empirisch ODER Upgrade-Gesamtgeld < u. Gesamtverbrauchsgeld)
    ORDER BY Ebenen-ID DESC
    GRENZE 1
), u.Benutzerebene);

Nach der Änderung ist die Ausführung erfolgreich und es liegt kein IFNULL-Fehler vor.

Zusammenfassend sind die Gründe folgende:

In MySQL kann IFNULL nur bestimmen, ob die Daten vorhanden sind und NULL sind, aber nicht, ob die Daten nicht gefunden wurden und NULL sind.

Das Obige ist meine persönliche Erfahrung. Ich hoffe, es kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden.

Das könnte Sie auch interessieren:
  • Lösungen für ungültige Nullsegmentbeurteilungen und IFNULL()-Fehler in MySql
  • Lösung für das MySQL IFNULL-Beurteilungsproblem
  • Zusammenfassung der Wissenspunkte im Zusammenhang mit Null (IFNULL, COALESCE und NULLIF) in MySQL
  • Detaillierte Erklärung der Funktionen IFNULL() und COALESCE() zum Ersetzen von Null in MySQL
  • Eine kurze Erläuterung der ifnull()-Funktion ähnlich der nvl()-Funktion in MySQL
  • Detaillierte Erklärung der Verwendung von IFNULL, NULLIF und ISNULL in MySql
  • Eine kurze Erläuterung der Verwendung der ISNULL-Funktion von SQL Server und der IFNULL-Funktion von MySQL
  • Einführung in den Unterschied zwischen IFNULL, IF und CASE in MySQL

<<:  Einige Fähigkeiten, die Sie beim Erstellen von Webseiten kennen müssen

>>:  HTML zeigt Auslassungspunkte hinter dem Text an... implementiert durch Textüberlauf

Artikel empfehlen

jQuery-Plugin zum Erzielen eines Code-Rain-Effekts

In diesem Artikel wird der spezifische Code des j...

Beispielanalyse der von MySQL 5.7 generierten Spaltennutzung

Dieser Artikel veranschaulicht anhand von Beispie...

Beispiel für die Implementierung des TikTok-Textschütteleffekts mit CSS

In der täglichen Entwicklung streiten sich Front-...

Mehrere Navigationsrichtungen, die in Zukunft beliebt sein werden

<br />Dies ist nicht nur ein Zeitalter der I...

Detaillierte Installationshistorie von Ubuntu 20.04 LTS

In diesem Artikel wird die Erstellung einer USB-S...

Detaillierte Erläuterung der Nginx-Rewrite-Jump-Anwendungsszenarien

Anwendungsszenario 1: Domänennamenbasierte Umleit...

Lassen Sie uns über die Leistung von MySQLs COUNT(*) sprechen.

Vorwort Im Grunde verwenden Programmierer am Arbe...

Detaillierte Erklärung zum Lay-Loading von JavaScript

Inhaltsverzeichnis Lazy Loading CSS-Stile: HTML-T...

CSS3 erstellt eine Webanimation, um einen springenden Balleffekt zu erzielen

Grundlegende Vorbereitung Für diese Implementieru...

Die einfachste Formularimplementierung des Flexbox-Layouts

Flexibles Layout (Flexbox) erfreut sich zunehmend...