2008-10-07 12 views
8

In SQL-Server macht es einen Unterschied, wenn ich eine Varchar-Spalte der Länge 32 oder 128 definieren?Größe der Varchar-Spalten

+3

Fragen Sie: macht es einen Unterschied, ob die Länge der Säule eine KRAFT VON ZWEI ist? (32/64/128/256/etc) Die Antwort auf diese Frage ist sehr unterschiedlich. – Portman

Antwort

3

Es sollte keinen merklichen Unterschied geben, da das Backend nur die Datenmenge speichert, die Sie in diese Spalte einfügen. Es wird nicht wie bei einer Char-Spalte auf die volle Größe des Feldes aufgefüllt.

Edit: Für weitere Informationen sollte dieses link nützlich sein.

3

Es sollte nicht. Es definiert nur die maximale Länge, die es aufnehmen kann, die tatsächlich verwendete Länge hängt von den eingegebenen Daten ab.

11

Ein varchar ist ein variables Zeichenfeld. Dies bedeutet, dass Textdaten auf eine bestimmte Länge gespeichert werden können. Ein varchar (32) kann nur 32 Zeichen enthalten, während ein varchar (128) 128 Zeichen enthalten kann. Wenn ich versuchte, "12345" in ein varchar (3) Feld einzugeben; Dies sind die Daten, die gespeichert werden sollen:

"123"

Die "45" wird "verkürztes" (verloren).

Sie sind sehr nützlich in Fällen, in denen Sie wissen, dass ein bestimmtes Feld nur eine bestimmte Länge maximal (oder nur sollte sein). Zum Beispiel: eine Postleitzahl oder ein Zustandsabkürzungszeichen. Tatsächlich werden sie im Allgemeinen für fast alle Arten von Textdaten verwendet (z. B. Namen/Adressen usw.). In diesen Fällen müssen Sie jedoch darauf achten, dass die von Ihnen angegebene Nummer für die Art der Daten, die ausgefüllt werden sollen, optimal ist diese Spalte.

Sie müssen jedoch auch vorsichtig sein, wenn Sie sie verwenden, damit der Benutzer nur die maximale Anzahl an Zeichen eingeben kann, die das Feld unterstützt. Andernfalls kann es Verwirrung stiften, wenn die Eingabe des Benutzers abgeschnitten wird.

+3

Das ist kein Stier. Zusätzlich zu den Namen und Adressen habe ich viele Varchar-Felder gefunden, die kategorisch mit Exkrementen gefüllt sind. – csj