4

Ich habe Tabelle in SQL Server sagen "Temp" und es hat Addr1, Addr2, Addr3, Addr4 Spalten und einige zusätzliche Spalten auch dort.SQL Server Größenunterschied für eine Spalte

Diese Addr1, Addr2, Addr3 und Addr4 sind Nvarchar-Typ. wenn ich die Größe dieser Spalte nach Objekt Explorer überprüfe. Es zeigt alle in nvarchar (100).

enter image description here

Aber wenn ich überprüfen sie Alt + F1 verwenden. Es zeigt die Details im Ergebnisbereich mit der Länge 200 an. Der Screenshot ist unten.

enter image description here

warum ist es anders? Wenn ich mehr als 100 Zeichen eingeben, bekomme ich Kürzungsfehler? scheint nur 100 Zeichen zu haben.

können Sie bitte lassen Sie mich wissen, was ist der Längenwert spezifiziert?

Danke, Prakash.

+0

[bereits anwered hier] (http://stackoverflow.com/a/21259797/4366471). –

+1

@ WojciechTomczyk ist es?Diese Antwort scheint sich nicht speziell mit dem Unterschied zwischen dem, was Sie im Object Explorer sehen, und den Ergebnissen von 'sp_help' zu befassen, sondern besagt lediglich, dass' NVARCHAR'-Werte doppelt so viel Speicherplatz beanspruchen. Es sei denn, ich missverstehe die Frage/Antwort, mit der du verlinkt hast. – 3N1GM4

+0

@ 3N1GM4 Ja, +1 dafür. Ich bin zu enthusiastisch Antworten zu verknüpfen ... –

Antwort

9

Da die Größe im Objekt-Explorer aufgeführt ist die Anzahl der Zeichen und die im Ergebnis der Abfrage zu sp_help aufgeführter Größe ist die Anzahl der Bytes .

VARCHAR Werte in SQL verwenden 1 Byte pro Zeichen, während NVARCHAR Werte 2 Byte pro Zeichen verwenden. Beide benötigen auch einen 2-Byte-Overhead - siehe unten. Also, weil Sie NVARCHAR Spalten betrachten, benötigen diese 200 (naja eigentlich 202) Bytes, um 100 Zeichen zu speichern, wobei ein VARCHAR nur 100 (wirklich 102) erfordern würde.

Referenzen:

MSDN: char and varchar

Die Speichergröße ist die tatsächliche Länge der Bytes + 2 eingegebenen Daten.

MSDN: nchar and nvarchar:

Die Speichergröße in Bytes ist zweimal die tatsächliche Datenlänge 2 Bytes eingegeben +.

(Hervorhebung von mir)

MSDN: sp_help:

Berichten Informationen über ein Datenbankobjekt (jedes Objekt in der sys.sysobjects Kompatibilitätsansicht angezeigt), ein benutzerdefinierter Datentyp, oder ein Datentyp.

 
    /------------------------------------------------------------------------\ 
    | Column name | Data type | Description         | 
    |-------------+-----------+----------------------------------------------| 
    | Length | smallint | Physical length of the data type (in bytes). | 
    \------------------------------------------------------------------------/ 
+0

Gut zu wissen! :) –

+0

Danke. Jetzt bekomme ich es .. –

+0

Fühlen Sie sich frei, die Antwort zu akzeptieren, wenn es Ihre Frage beantwortet @ ps_prakash02 - froh, ich könnte helfen! – 3N1GM4