# Frage zu potenziellen Leerzeichen in einer Datenbank



## DennisXX (25. Jul 2011)

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?


----------



## hansmueller (25. Jul 2011)

Hallo,

könnte es sein, daß du String.trim() suchst?

MfG
hansmueller


----------



## hansmueller (25. Jul 2011)

Es gibt in SQL auch noch RTRIM und LTRIM.

MfG
hansmueller


----------



## Evil-Devil (25. Jul 2011)

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.


----------



## DennisXX (25. Jul 2011)

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


----------



## hansmueller (25. Jul 2011)

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


----------

