Discussion:
Umsteiger-Anfrage:SQL-Srv füllt String mit Leerzeichen!?!?
(zu alt für eine Antwort)
HP Enderle
2005-11-07 09:30:17 UTC
Permalink
Hallo Newsgroup,

als Umsteiger von MySQL auf MS nun meine erste Frage ...

MS-SQL füllt anscheinend alle Strings mit Leerzeichen bis zur Feldlänge
auf!?!?

Abgesehen von unübersichtliche langen Export Tabellen gibts auch Probleme
bei der manuellen Datenpflege mit dem SQL Enterprise-Manager (z.B. wenn man
Felder editiert, wo der Text dann länger wird...)

Kann man diese unsinnige Leerzeichenfüllung irgendwo abschalten?


Danke für die Hilfe

HP Enderle
Jens
2005-11-07 10:15:01 UTC
Permalink
Hallo HP!

Diese "unsinnige" Auffüllung liegt warscheinlich am Design der Spalte,
wenn Du einen CHAR Typ nimmst, dann hat dieser eine feste Länge, also
CHAR(50). Du siehst im Enterprise Manager nur den verfügbaren Platz
den Du hast, dieser wird aber nicht unbedingt (außer Dein Frontend
macht dies zwingend) mit Leerzeichen aufgefüllt.

Versuche doch einfach mal ein SELECT Len(Spalte) auf deine Tabelle zu
machen. Damit wirst Du sehen, daß auch der Enterpise Manager die
Spalten nciht mit Leerzeichen auffüllt. Der reservierte Speicherplatz
ist jedoch bei festen Datantypen grösser, da hier der Platz für den
Datentypen direkt voll reserviert wird (also in diesem Beispiel 50
zeichen)

Für mehr Informationen einfach mal in die BOl sehen.

HTH, Jens Suessmeyer.
Christoph Muthmann
2005-11-07 10:14:19 UTC
Permalink
Post by HP Enderle
Hallo Newsgroup,
als Umsteiger von MySQL auf MS nun meine erste Frage ...
MS-SQL füllt anscheinend alle Strings mit Leerzeichen bis zur
Feldlänge auf!?!?
Abgesehen von unübersichtliche langen Export Tabellen gibts auch
Probleme bei der manuellen Datenpflege mit dem SQL Enterprise-Manager
(z.B. wenn man Felder editiert, wo der Text dann länger wird...)
Kann man diese unsinnige Leerzeichenfüllung irgendwo abschalten?
Hallo Enderle,
wann und wo tritt das auf? Welchen Datentyp (char oder varchar)
verwendest Du? Verwende besser varchar oder nvarchar.


Einen schönen Tag noch,
Christoph
--
(Please post ALL replies to the newsgroup only unless indicated
otherwise)
Elmar Boye
2005-11-07 09:51:15 UTC
Permalink
Hallo HP,

HP Enderle <***@ebcom.de> schrieb ...

komischer Vorname ;-)
Hier wird ein vollständiger Vor- und Zuname gern gesehen. Danke.
Post by HP Enderle
als Umsteiger von MySQL auf MS nun meine erste Frage ...
MS-SQL füllt anscheinend alle Strings mit Leerzeichen bis zur
Feldlänge auf!?!?
Nur wenn Du entweder den [N]CHAR(...) Datentyp verwendest,
wenn ja ändere auf [N]VARCHAR(...).

Oder aber wenn Deine Eingabedaten am Ende weitere Leerzeichen
enthalten. Die wären dann z. B. via RTRIM() abzuschneiden.
Letzteres gilt auch für bestehende Tabellen wo Du die
Datenypen wie oben von CHAR auf VARCHAR änderst.
Post by HP Enderle
Kann man diese unsinnige Leerzeichenfüllung irgendwo abschalten?
Nichts unsinniges, sondern ANSI Standard.

Siehe SET ANSI_PADDING in der SQL Server Dokumentation.

Gruss
Elmar
Stefan Hoffmann
2005-11-07 10:16:55 UTC
Permalink
tach,
Post by HP Enderle
MS-SQL füllt anscheinend alle Strings mit Leerzeichen bis zur Feldlänge
auf!?!?
Vergleich mal CHAR und VARCHAR in der OH.
Post by HP Enderle
Abgesehen von unübersichtliche langen Export Tabellen gibts auch Probleme
bei der manuellen Datenpflege mit dem SQL Enterprise-Manager (z.B. wenn man
Felder editiert, wo der Text dann länger wird...)
Der EM ist kein Werkzeug zur Datenpflege.


mfG
--> stefan <--

Loading...