SQLite-Äquivalent zu ISNULL(), NVL(), IFNULL() oder COALESCE()

Junaid Khan 21 Juni 2023
  1. Abrufen von Datensätzen mit NULL-Werten in der SQLite-Datenbank
  2. Verwenden Sie THEN und ELSE, um in der SQLite-Datenbank nach NULL-Werten zu suchen
  3. Verwenden Sie die Funktion COALESCE() in der SQLite-Datenbank
  4. Verwenden Sie die Funktion NVL() in der SQLite-Datenbank
  5. Unterschied zwischen den Funktionen COALESCE() und ifnull()
  6. Unterschied zwischen den Funktionen COALESCE() und isnull()
SQLite-Äquivalent zu ISNULL(), NVL(), IFNULL() oder COALESCE()

SQLite wird zum Erstellen, Lesen, Aktualisieren und Löschen von Datensätzen aus der Datenbank verwendet. Die Datenbank enthält verschiedene Tabellen zur Pflege der Daten.

Jede Tabelle besteht aus Zeilen und Spalten, die den Datensatz tragen. Diese Datensätze haben oft leere oder Nullwerte, die Probleme oder Fehler beim Abrufen der Daten verursachen.

Abrufen von Datensätzen mit NULL-Werten in der SQLite-Datenbank

Um die Datensätze aus der SQLite-Datenbank abzurufen, verwenden wir die SELECT-Klausel in der SQLite-Anweisung. Die SELECT-Anweisung ruft auch die NULL-Werte ab und ignoriert sie und ruft den Datensatz nur mit dem Wert ab.

SELECT field
FROM table
WHERE field = aCondition

Ein Problem tritt auf, wenn leere Werte in der Tabelle vorhanden sind. Die SELECT-Anweisungen benötigen die NULL-Prüfung, um die leeren Werte aufzuzeichnen oder mit einem bestimmten Text zu füllen, um die Datensätze mit leeren Werten aufzunehmen.

SELECT field, [isnull](field, '')
FROM table
WHERE field = aCondition

In der obigen Anweisung können die NULL-Werte die Funktion isnull() möglicherweise nicht erkennen. Es gibt eine ähnliche Funktion wie die Funktion isnull(), die Funktion ifnull(), um dieses Problem zu lösen.

Die vollständige Syntax der Funktion ifnull() lautet wie folgt.

Syntax der Funktion ifnull():

ifnull(column, alternateValue)

Parameter:

column Die Zielspalte in der SQLite-Datenbank.
alternateValue Der ausgewählte Wert, wenn der Rückgabewert null oder leer ist.

In den folgenden Anweisungen verwenden wir die Funktion ifnull() mit der Anweisung SELECT. Die erste Anweisung entfernt alle NULL-Werte aus dem Datensatz und ersetzt sie durch einen leeren String.

Sie können einen beliebigen Wert als Ersatz für die NULL-Werte in den Datenbankeinträgen hinzufügen. Dies kann in der zweiten Anweisung gezeigt werden, wo ein NULL-Wert durch einen This is a NULL-String-Wert in der SQLite-Datenbank ersetzt wird.

Die Funktion ifnull() nimmt genau die beiden Argumente und gibt den ersten nicht leeren String oder Text zurück oder NULL, wenn beide bereitgestellten Argumente NULL sind.

SELECT ifnull(NameofColumn,'')
SELECT ifnull(NULL,'This is a NULL');

Verwenden Sie THEN und ELSE, um in der SQLite-Datenbank nach NULL-Werten zu suchen

Wenn das erste Szenario für Ihre Bedingung ungeeignet ist, können wir alternativ die bedingte Anweisung IS NULL verwenden, um die leeren Werte in der Tabelle zu überprüfen.

Die folgende SQLite-Anweisung entspricht dem Befehl ISNULL(fieldName, 0). Die Klausel IS NULL gibt alle leeren Werte in der Datenbank zurück.

Wird irgendein Wert gefunden, ersetzt THEN den Leerwert durch einen 0-Wert, SONST wird etwas gefunden (nicht leer), dann bleibt der Wert unverändert.

SELECT fieldName FROM NameOfTable WHERE fieldName IS NULL THEN 0 ELSE fieldName END

Verwenden Sie die Funktion COALESCE() in der SQLite-Datenbank

Ähnlich wie die Funktion ifnull() liefert die Funktion COALESCE() einen alternativen Wert zum Spaltenwert, wobei der angegebene Wert NULL ist. Um die SQLite-Anweisung zur Überprüfung des Nullwerts mit der Funktion COALESCE() zu schreiben, schreiben wir die Anweisung für die angegebene Tabelle.

Die Funktion COALESCE() funktioniert in SQLite Version 3.8.6 und höher.

Ausweis Menge
1 200
2 13
3 NULL
4 30
5 512
SELECT COALESCE(Quantity, 0) AS Inventory
FROM Product;

Aktualisierte Tabellenausgabe:

Ausweis Menge
1 200
2 13
3 0
4 30
5 512

Verwenden Sie die Funktion NVL() in der SQLite-Datenbank

Ähnlich wie die Funktion COALESCE() macht die Funktion NVL() dasselbe. Es sucht nach leeren Werten in der Datenbank und ersetzt sie durch einen alternativen Wert, wie in der Funktion NVL() angegeben.

Der Unterschied besteht darin, dass die Funktion isnull() durch die Funktion NVL() ersetzt wurde, eine Oracle-Funktion im SQL-Server.

Unterschied zwischen den Funktionen COALESCE() und ifnull()

Der Hauptunterschied zwischen den Funktionen COALESCE() und ifnull() besteht darin, dass die Funktion ifnull() nur zwei Argumente akzeptiert. Es prüft, ob das erste Argument NULL ist oder nicht, und wenn es NULL ist, ersetzt es es durch das zweite Argument.

Umgekehrt nimmt die Funktion COALESCE() zwei oder mehr Parameter und prüft, ob das erste Argument NULL ist. Wenn das erste Argument NULL ist, wird nach dem zweiten gesucht.

Wenn das zweite Argument NULL ist, überprüft es das nächste Argument, bis es einen nicht leeren Wert findet und ersetzt es durch das erste NULL-Argument.

SELECT IFNULL('any value', 'extra value');
SELECT IFNULL(NULL,'extra value');

SELECT COALESCE(NULL, 'extra value');
SELECT COALESCE(NULL, 'any value', 'extra value');
SELECT COALESCE(NULL, NULL, NULL, NULL, 'the non-null value');

Ausgang:

any value
extra value
extra value
some value
the non-null value

Unterschied zwischen den Funktionen COALESCE() und isnull()

Hauptsächlich führen beide Funktionen die gleiche Funktionalität aus, prüfen auf die NULL-Werte und ersetzen sie durch den angegebenen nicht leeren Wert. Sie unterscheiden sich jedoch in ihrem Verhalten.

  1. Der Unterschied besteht darin, dass die Funktion isnull() nur einmal auswertet, die Funktion COALESCE() jedoch mehrfach auswertet.
  2. Ein weiterer Unterschied besteht darin, dass die Funktion isnull() bei der Bestimmung des Datentyps den Datentyp des ersten Arguments verwendet, während die Funktion COALESCE() die Ausdrucksregel CASE verwendet und den Datentyp mit der höchsten Priorität verwendet .
  3. Der letzte Unterschied besteht darin, dass die Funktion isnull() niemals einen NULL-Wert zurückgibt, und wir gehen immer davon aus, dass das Ergebnis dieser Funktion nicht nullwertig ist. Während die Funktion COALESCE() den Ausdruck NULL zurückgeben kann.

Beispiel 1:

CREATE TABLE example
(
  column1 INTEGER NULL,
  column2 AS COALESCE(column1, 0) PRIMARY KEY,
  column3 AS ISNULL(column1, 0)
);

Ausgang:

# the statement fails as the nullability of the COALESCE function evaluates to NULL

Error: PRIMARY KEY cannot accept NULL values

Beispiel 2:

CREATE TABLE example
(
  column1 INTEGER NULL,
  column2 AS COALESCE(column1, 0),
  column3 AS ISNULL(col1umn, 0) PRIMARY KEY
);

Ausgang:

# the above statement works as the nullability of the ISNULL function evaluates as NOT NULL.

No error
Junaid Khan avatar Junaid Khan avatar

Hi, I'm Junaid. I am a freelance software developer and a content writer. For the last 3 years, I have been working and coding with Python. Additionally, I have a huge interest in developing native and hybrid mobile applications.

LinkedIn