SQLite
 sql >> Datenbank >  >> RDS >> SQLite

Unterschied zwischen NullIf() und IfNull() in SQLite

SQLite hat eine Funktion namens nullif() und eine weitere Funktion namens ifnull() , die jeweils einem anderen Zweck dienen.

  • nullif() ermöglicht es Ihnen, bestimmte Werte als NULL zu behandeln. Sie können es sich als „NULL zurückgeben, wenn …“ vorstellen.
  • ifnull() ermöglicht es Ihnen, NULL-Werte durch einen anderen Wert zu ersetzen. Sie können es sich als „wenn NULL, dann …“ vorstellen.

Sie tun also im Grunde das Gegenteil voneinander. Einer ersetzt NULL-Werte durch einen anderen Wert und der andere ersetzt einen anderen Wert durch NULL.

Beispiele

In einigen Fällen können beide Funktionen dasselbe Ergebnis zurückgeben. Zum Beispiel:

SELECT
  nullif(1, 2),
  ifnull(1, 2);

Ergebnis:

nullif(1, 2)  ifnull(1, 2)
------------  ------------
1             1           

Das nullif() Die Funktion gibt eine Kopie ihres ersten Arguments zurück, wenn die Argumente unterschiedlich sind, und NULL, wenn die Argumente gleich sind. In diesem Fall sind die Argumente unterschiedlich und es wird das erste Argument zurückgegeben.

Der ifnull() Funktion hingegen gibt eine Kopie des ersten Nicht-NULL-Arguments zurück. In diesem Fall waren beide Argumente nicht NULL und daher wurde das erste Argument zurückgegeben.

Mit dem folgenden Beispiel beginnen wir, den Unterschied zwischen diesen beiden Funktionen zu erkennen:

SELECT
  nullif(1, 1),
  ifnull(1, 1);

Ergebnis:

nullif(1, 1)  ifnull(1, 1)
------------  ------------
              1           

Das nullif() Die Funktion gibt NULL zurück, wenn beide Argumente gleich waren. In diesem Fall waren beide Argumente gleich, also nullif() hat seinen Job gemacht und NULL zurückgegeben.

Der ifnull() Die Funktion gibt das erste Nicht-NULL-Argument zurück, und so hat sie in diesem Fall das erste Argument zurückgegeben.

Die Tatsache, dass beide Argumente gleich sind, bedeutet ifnull() nichts . Es gibt einfach das erste Nicht-NULL-Argument zurück. Wenn beide Argumente NULL sind, wird NULL zurückgegeben.

Lassen Sie uns versuchen, einige NULLen hinzuzufügen.

SELECT
  nullif(NULL, 1),
  ifnull(NULL, 1);

Ergebnis:

nullif(NULL, 1)  ifnull(NULL, 1)
---------------  ---------------
                 1              

In diesem Fall nullif() hat NULL zurückgegeben, weil NULL das erste Argument ist (denken Sie daran, dass nullif() gibt sein erstes Argument zurück, wenn beide Argumente unterschiedlich sind).

ifnull() andererseits gab es sein erstes Nicht-NULL-Argument zurück.

So sieht es aus, wenn wir die Argumente vertauschen.

SELECT
  nullif(1, NULL),
  ifnull(1, NULL);

Ergebnis:

nullif(1, NULL)  ifnull(1, NULL)
---------------  ---------------
1                1              

Beide Argumente sind unterschiedlich und daher nullif() gibt das erste Argument zurück.

Das erste Argument ist nicht NULL und daher ifnull() gibt es zurück.