Fragensteller
Felder werden mit Leerschritten aufgefüllt

Frage
-
Hallo,
ich habe mir auf dem SQL-Server eine ganz einfache SQL-Tabelle erstellt, diese ich mich Werten befüllen möchte. Mein Problem ist es, dass aktuell die Spalten immer mit Leerschritten bis zum Spaltenende autom. aufgefüllt werden, sobald ich das Feld verlasse. Wo habe ich meinen Einrichtungsfehler? Es wirklich nur eine einfach Tabelle ohne jeglichem Index, etc.
Alle Antworten
-
Hallo,
das genannte Verhalten, das automatisch mit Leerzeichen aufgefüllt wird, gibt es nur bei Feldern mit dem Datentyp char/nchar, nicht bei varchar/nvarchar. Varchar speichert genau das, was man einfügt, nicht mehr und wenn in dem Feld Leerzeichen vorhanden sind, dann weil das genutzte Frontend die anfügt (oder ein vorhandener Trigger).
Olaf Helper
[ Blog] [ Xing] [ MVP]- Bearbeitet Olaf HelperMVP Dienstag, 10. April 2018 05:50
-
Genau so ist es, was zu der Frage führt: Wie kommen die Daten in die Tabelle?
Einen schönen Tag noch, Christoph -- Data Platform MVP - http://www.insidesql.org/blogs/cmu
- Als Antwort vorgeschlagen Olaf HelperMVP Dienstag, 10. April 2018 10:25
- Nicht als Antwort vorgeschlagen Olaf HelperMVP Dienstag, 10. April 2018 10:25
-
Hi,
war das Feld vorher mal char bzw. nchar? Falls ja, musst Du die alten Werte, die in dieser Zeit reinkamen, einmalig mit
UPDATE Tabelle SET Spalte = RTRIM( Spalte )
aktualisieren. Die Leerzeichen bleiben bei der Umstellung des Datentyps erhalten.
Falls es das nicht war, poste mal bitte die exakte Versionsnummer der SQL Instanz.
SELECT @@VERSION
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hallo SBrand,
ich hoffe, dass Dir die Antworten weiterhelfen konnten. Ich habe mich des Themas noch einmal etwas ausführlicher angenommen, als es in einem solchen Forum möglich ist. Das Thema ist sehr komplex und einen eigenen Artikel wert gewesen.
Ich habe ihn heute unter folgender Adresse veröffentlicht:
http://www.db-berater.de/2018/04/inside-the-engine-feste-typenlaenge-wird-variable-typenlaenge/
Vielleicht hilft Dir der Artikel ein wenig beim Verständnis für die Typenkonvertierung.
Uwe Ricken (Blog | Twitter)
Microsoft Certiied Master - SQL Server 2008
Microsoft Certified Solution Master - CHARTER Data Platform
Microsoft Certified Solution Expert - Data Platform
db Berater GmbH
Microsoft SQL Server Blog (german only) -
Ergänzend zu dem Artikel würde ich da noch erwähnen, dass dies dem SQL-Standard entspricht und für alle Datenbanken gilt, die sich daran halten, nicht nur beim Microsft SQL-Server.
Der umgekehrte Weg wäre da auch noch interessant, dann ein Cast von CHAR auf VARCHAR entfernt die Leerzeichen am Ende nicht.
Übrigens eine einfache Anforderung, [VAR]CHAR auf eine feste Länge mit Leerzeichen zu ergänzen, ist der Cast auf CHAR, der die fehlenden Leerzeichen einfach hinzufügt.
-
Hallo,
zunächst Danke für die Hilfreichen Artikel.
Da ich die Daten über eine Access-Datenbank importiere, habe ich mir doch mal die Access-Datenbank angeschaut und hier habe ich den Fehler gefunden.
Meine Ursprungsfelder waren alle länger als die Zielfelder. Nachdem ich die Längen auf der Access-DB der SQL-Tabelle angepasst habe, hat es funktioniert.
Danke an alle.