2014-01-21 11 views
7

Ich habe alles über Varchar gegen Nvarchar gelesen. Aber ich habe keine Antwort auf eine einfache Frage gefunden. Wie ermitteln Sie die Länge Ihrer Nvarchar-Spalte? Für Varchar ist es sehr einfach: meine Beschreibung kann zum Beispiel 100 Zeichen haben, also definiere ich varchar (100). Jetzt wurde mir gesagt, dass wir jede Sprache internationalisieren und unterstützen müssen. Bedeutet das, dass ich meine Description-Spalte in nvarchar (200) ändern muss, d. H. Einfach die Länge verdoppeln? (Und ich bin alle anderen Fragen zu ignorieren, die für den Moment mit der Internationalisierung beteiligt sind.)Ermitteln der Länge von Nvarchar

Ist es so einfach?

Antwort

12

Im Allgemeinen ist es das gleiche wie für varchar wirklich. Die Nummer ist immer noch die maximale Anzahl von Zeichen, nicht die Datenlänge.

nvarchar(100) erlaubt 100 Zeichen (die möglicherweise 200 Bytes in SQL Server verbrauchen würde).

Sie könnten für die Tatsache zulassen wollen, dass verschiedene Kulturen mehr Zeichen annehmen können, obwohl die gleiche Sache zu äußern.

Eine Ausnahme ist jedoch, wenn Sie eine SC Sortierung verwenden (die supplementary characters unterstützt). In diesem Fall kann ein einzelnes Zeichen bis zu 4 Bytes belegen.

So wäre schlimmsten Fall den Charakter Wert verdoppeln.

+1

Hmmm. Auf einer anderen MS-Site habe ich diesen Kommentar von einem MS MVP gesehen, der dem, was Sie sagen, widerspricht: Beachten Sie, dass nvarchar (50) nicht 50 Zeichen bedeutet - es bedeutet 50 Doppel-Bytes. Daher können Sie nur 25 Zeichen speichern, für die 4 Bytes in nvarchar (50) erforderlich sind. Ich sage nicht, dass du falsch liegst, nur dass ich verwirrt bin. –

+1

@KaneJeeves - Das ist falsch. Einfach selbst zu testen! 'DECLARE @ T TABELLE (C NVARCHAR (5)); EINFÜGEN IN @ T-WERTE ('Falsch'); WÄHLEN SIE C, DATENLÄNGE (C) VON @ T '. Hast du einen Link? –

+0

Super, danke. Beweist auch den Punkt, dass man nicht immer darauf vertrauen kann, dass jemand mit einer Zertifizierung immer Recht hat. –