Wie die SQL-CASE Expressions NULLIF und COALESCE verwenden

Das einzige, was Sie können in dieser Welt sicher sein, ist die Veränderung. Glücklicherweise macht SQL für diese. Klassische Thermodynamik und moderne Chaostheorie beide zeigen, dass Systeme natürlich wandern von einem bekannten, geordneten Zustand in einen ungeordneten Zustand, die niemand vorhersagen kann. Wer schon einmal den Status eines Jugendzimmer für einen Zeitraum von einer Woche nach dem Raum überwacht hat, kann für diese Theorien gereinigt bürgen.

Datenbanktabellen haben bestimmte Werte in Feldern, die bekannte Inhalte. Normalerweise, wenn der Wert eines Feldes nicht bekannt ist, enthält das Feld den Wert null. In SQL können Sie eine verwenden FALL Ausdruck, den Inhalt eines Tabellenfeldes von einem bestimmten Wert auf einen Nullwert zu ändern. Der Null-Wert zeigt an, dass Sie nicht mehr der Wert des Feldes kennen. Betrachten Sie das folgende Beispiel.

Stellen Sie sich vor, dass Sie eine kleine Fluggesellschaft besitzen, die Flüge zwischen Südkalifornien und Staat Washington bietet. Bis vor kurzem hielt einige Ihrer Flüge in San Jose International Airport, bevor Sie fortfahren, um zu tanken. Leider verlor man nur rechts in San Jose zu fliegen. Von nun an müssen Sie Ihre Betankung auf entweder Flughafen San Francisco oder Oakland International Airport zu stoppen zu machen.

Zu diesem Zeitpunkt wissen Sie nicht, welche Flüge auf welchem ​​Flughafen zu stoppen, aber Sie wissen, dass keines der Flüge in San Jose sind zu stoppen. Sie haben eine FLIGHT-Datenbank, die wichtige Informationen über Ihre Routen enthält, und jetzt wollen Sie die Datenbank zu aktualisieren alle Verweise auf San Jose zu entfernen. Das folgende Beispiel zeigt eine Möglichkeit, dies zu tun:

UPDATE Flightset RefuelStop = CASEWHEN RefuelStop = 'San Jose'THEN NULLELSE RefuelStopEND -

Weil Gelegenheiten wie diese - in dem Sie einen bekannten Wert mit einem Nullwert ersetzen wollen - häufig auftreten, bietet SQL eine Kurzschreibweise diese Aufgabe zu erfüllen. Das obige Beispiel, ausgedrückt in dieser Kurzform, sieht wie folgt aus:

UPDATE Flightset RefuelStop = NULLIF (RefuelStop, 'San Jose') -

Sie können diesen Ausdruck auf Englisch übersetzen, wie, # 147-Update des FLIGHT Tabelle nach der Einstellung, RefuelStop Spalte auf null, wenn der vorhandene Wert von RefuelStop ist 'San Jose'. machen sonst keine Veränderung # 148.

NULLIF wenn ist noch handlicher Sie Daten konvertieren, die Sie ursprünglich für die Verwendung mit einem Programm angesammelt in einem Standard-Programmiersprache geschrieben wie C ++ oder Java. Standard-Programmiersprachen haben keine NULL-Werte, so ist eine gängige Praxis spezielle Werte verwenden, um das Konzept der zu repräsentieren # 147-nicht bekannt # 148- oder # 147-nicht anwendbar # 148-.

Eine numerische -1 darstellen kann, einen nicht bekannten Wert für GEHALT, zum Beispiel, und eine Zeichenkette, # 147 - *** # 148- darstellen kann, eine nicht bekannte oder nicht-anwendbar Wert für JOBCODE. Wenn Sie diese nicht bekannt und nicht-anwendbar Staaten in einer SQL-kompatiblen Datenbank mit Nullen darstellen wollen, müssen Sie die speziellen Werte zu nulls konvertieren. Im folgenden Beispiel wird diese Umwandlung für einen Mitarbeiter Tabelle, in der einige Gehaltswerte sind unbekannt:

UPDATE EMPSET Gehalt = CASE SalaryWHEN -1 THEN NULLELSE SalaryEND -

Sie können diese Umwandlung bequemer durchführen, indem Sie NULLIF, wie folgt:

UPDATE EMPSET Gehalt = NULLIF (Gehalt, -1) -

VERSCHMELZEN, mögen NULLIF, ist eine Kurzform eines bestimmten FALL Ausdruck. VERSCHMELZEN befasst sich mit einer Liste von Werten, die nicht null sein oder auch nicht. So funktioniert das:

  • Wenn einer der Werte in der Liste nicht leer ist: Das VERSCHMELZEN Ausdruck nimmt auf diesen Wert.

  • Wenn mehr als ein Wert in der Liste nicht leer ist: Der Ausdruck nimmt den Wert des ersten Nicht-Null-Element in der Liste.

  • Wenn alle Werte in der Liste sind null: Der Ausdruck erfolgt auf dem Nullwert.

EIN FALL Ausdruck mit dieser Funktion hat die folgende Form:

CASEWHEN Wert1 IST NICHT NULLTHEN value1WHEN Wert2 NICHT NULLTHEN value2 ..., wenn der Wertn NICHT NULLTHEN WertnELSE NULLEND

Die entsprechende VERSCHMELZEN Stenografie sieht wie folgt aus:

COALESCE (value1, value2, ..., Wertn)

Vielleicht möchten Sie ein zu verwenden, VERSCHMELZEN Ausdruck, nachdem Sie führen ein OUTER JOIN Betrieb. In solchen Fällen, VERSCHMELZEN Sie sparen eine Menge Tipparbeit können.

Menü