Laden...

[gelöst] SQL Tabellen-Spaltendefinition mit 2 vorgegebenen Längen

Erstellt von ThomasE. vor 7 Jahren Letzter Beitrag vor 7 Jahren 1.161 Views
T
ThomasE. Themenstarter:in
461 Beiträge seit 2013
vor 7 Jahren
[gelöst] SQL Tabellen-Spaltendefinition mit 2 vorgegebenen Längen

verwendetes Datenbanksystem: MS SQL ab 2012

Hallo,

ich hoffe ich hab das Thema venünpftig benannt.

Wollte fragen, ob es für eine neue Spalte in eirner Tabelle möglich ist, 2 Größenangaben zu machen, nämlich eine kleinere und eine mit Maximum?:


ALTER TABLE dbo.Tabelle ADD NeueSpalte (NVARCHAR(15)->normal) NVARCHAR(30)->Maximum

Soweit ich weiß, wird bei NVARCHAR nur der Platz belegt, der benötigt wird, ohne das der Rest der definierten Größe der Spalte mit Leerzeichen aufgefüllt wird.

Wie ist es aber dann in echt, wird im Hintergrund trotzdem der Platz reserviert, da ja sich der Wert ändern kann?
--> Aus dem heraus stellt sich dann meine Frage, ist es möglich mit 2 Größenangaben eine Spalte zu definieren oder eher humbug?

Warum?
Da es sein kann, daß z.Bsp 80% der Daten sich unter der Länge von 15 befindet, der wenige Rest dann aber mehr haben kann.

Vielen Dank im Voraus!

Ich habe den Titel mal angepasst, so dass Suchende auch etwas damit anfangen können. EDIT: Ich sollte beim Wort "Shift" im Titel das "f" nicht vergessen... 😄

16.806 Beiträge seit 2008
vor 7 Jahren

Eine Spalte kann nur eine Größe haben - ansonsten würde die Angabe auch keinen Sinn machen.

Die Größe wird vor allem für den bereits im Voraus reservierten Speicher der Datenbank verwendet. Tatsächlich sind aber Datenbanken mittlerweile so intelligent, dass sie in einer Spalte nur die Größe tatsächlich auf die Festplatte legen, wie sie auch benötigt wird.
Anders sieht es bei Indizes und Werten im RAM aus.

T
ThomasE. Themenstarter:in
461 Beiträge seit 2013
vor 7 Jahren

Danke für die schnelle Erklärung.

Die Sache ist damit abgeschlossen. 👍

Ich habe den Titel mal angepasst, so dass Suchende auch etwas damit anfangen können. EDIT: Ich sollte beim Wort "Shift" im Titel das "f" nicht vergessen... 😄