Frage zu potenziellen Leerzeichen in einer Datenbank

DennisXX

Bekanntes Mitglied
Hi Folks !

ich habe mal eine generelle Frage zu dem Thema Datenbanken und den Inhalten der Felder einer beliebigen Datenbanktabelle.

Nehmen wir mal an, dass in einer Datenbanktabelle beliebige Felder vom Typ Char stehen. Bei der Deklaration dieser Datenbanktabelle kann man vorher nicht statisch festlegen, wieviele Zeichen die einzelnen Felder dieser Spalten aufnehmen sollen.

Es können somit mal kürzere und mal längere Strings in den feldern landen, also keine Strings fester Länge. Diese Felder der Tabelle werden immer wieder automatisch per Funktion mit den Strings unterschiedlciher Länge gefüllt.

Nun mal meine Frage an euch. Wenn in dieser Funktion nicht überprüft wird, ob die Strings Leerzeichen (z.B. links vor dem ersten Buchstaben oder rechts nach dem letzten Buchstaben und nicht in der Mitte des letzten Strings) enhalten, werden diese Leerzeichen automatisch vom DBMS in die Felder mitübernommen, so dass ein Vergleich zwischen zwei Strings, die eigentlich identisch sind, aber eben weil einer der Strings Leerzeichen enthält, doch letztenendes wieder unterschiedlich sind.

Ich hoffe, es ist halbwegs verständlich geworden, worauf ich hinaus möchte.

Greetz
Dennis

//Edit

Wie können solche Leerzeichen sicher abgefangen werden?
 
Steht dir kein Varchar Typ in deinen DBMS zur Verfügung? Um die Leerzeichen vor dem Text zu verhindern kannst du beim Insert bereits ein LTrim nutzen. Sofern möglich würde ich aber auf Varchar setzen und Trim beim Insert nutzen.
 
Hi Folks !

Danke für die bisherigen Antworten !

Ich muss aber nochmal explizit nachfragen:

Können Leerzeichen in die Felder der Datenbanktabelle geschrieben werden, wenn diese zuvor nicht abgefangen werden? Oder killt die Datenbank solche Leerzeichen automatisch aus den Felder der Tabelle (also links vor dem ersten Buchstaben oder rechts nach dem letzten Buchstaben)?

Danke für die Antwort !

Greetz
Dennis
 
DennisXX hat gesagt.:
Können Leerzeichen in die Felder der Datenbanktabelle geschrieben werden, wenn diese zuvor nicht abgefangen werden?
Ja, wo kämen wir den da hin, wenn die Datenbank einfach OHNE Anweisung Zeichen löscht oder ignoriert.

DennisXX hat gesagt.:
Oder killt die Datenbank solche Leerzeichen automatisch aus den Felder der Tabelle (also links vor dem ersten Buchstaben oder rechts nach dem letzten Buchstaben)?
Nein, daß mußt du schon selber machen bzw. der Datenbank entsprechende Befehle geben. (Siehe Begründung oben).

MfG
hansmueller
 

Zurück
Oben