Oracle bietet die schöne Funktion trim(), die Leerzeichen wegschneidet. Aber zum Teufel! irgendwie hat meine Abfrageklausel trim(table.field) <> ''
NIE ein Ergebnis gebracht. Egal, ob field
(ein char(10)-Feld) leer war oder nicht.
Die Lösung: trim()
verwandelt leere Strings (z.B. ' '
) in null
und nicht wie beispielsweise in Java in den Leerstring ""
. Auch ''
sieht Oracle als null
. Und so ist null
nie verschieden von null
.
Mir war vorher noch nie aufgefallen, wie schwer es sein kann, DB-Admins von der Sinnhaftigkeit der Unterscheidung zwischen null und Leerstring zu überzeugen. Naja, Datenbanken sind halt selten objektorientiert.