Leere Felder - FAQ-Base

From The Document Foundation Wiki
< Faq‎ | Base‎ | 125
Jump to: navigation, search

Wie muss ich mit leeren Feldern umgehen?

Bei der Verbindung von Feldern kann es passieren, dass das Ergebnis unerwartet ein leeres Feld ergibt. Hier gilt grundsätzlich: Ein Feld ohne Inhalt in einer Datenbank hat die Eigenschaft NULL. Dies ist nicht gleichbedeutend mit einem leeren Text, also z.B. der Eingabe ''. Dies ist auch nicht gleichbedeutend mit 0 oder einem Markierfeld, das extra abgewählt wurde, also 0 oder FALSE ist. Wird nun mit einem Feld ohne Inhalt ein anderes Feld verknüpft, so ist das Ergebnis immer NULL.

Vorname Nachname "Nachname"||', '||"Vorname"
Rolf Hautdenlukas Hautdenlukas, Rolf
Annette NULL --kein zusammengesetzter Name--
NULL Trumpel --kein zusammengesetzter Name--
Zahl1 Zahl2 Zahl1 + Zahl2
2 5 7
2 NULL --keine Summe--
NULL 5 --keine Summe--

Um zu vermeiden, dass in den obigen Fällen die jeweiligen Ergebnisspalten leer bleiben, gibt es für die HSQLDB die Funktion IFNULL. Universeller hingegen ist die Funktion COALESCE, die sowohl bei der HSQLDB als auch in Firebird funktioniert:

Vorname Nachname COALESCE("Nachname", '???')||COALESCE(', '||"Vorname",'')
Rolf Hautdenlukas Hautdenlukas, Rolf
Annette NULL  ???, Annette
NULL Trumpel Trumpel
Zahl1 Zahl2 COALESCE(Zahl1, 0) + COALESCE(Zahl2, 0)
2 5 7
2 NULL 2
NULL 5 5