none
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.

    Montag, 9. April 2018 20:56

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]


    Dienstag, 10. April 2018 05:49
  • 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
    Dienstag, 10. April 2018 06:35
    Beantworter
  • Hallo,

    Danke für die Rückmeldung. Meine Felder sind doch als "nvarchar" erstellt worden.

    Habe ich etwas übersehen?

    Danke

    Dienstag, 10. April 2018 09:17
  • Übersehen hast Du nur die Nachfrage, wie die Daten in die Tabelle kommen.

    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Dienstag, 10. April 2018 09:33
  • 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

    Dienstag, 10. April 2018 09:51
    Moderator
  • 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)

    Samstag, 14. April 2018 11:02
  • 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.

    Sonntag, 15. April 2018 15:50
  • 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.

    Mittwoch, 18. April 2018 09:06