char und varchar (Transact-SQL)
String-Datentypen mit fester oder variabler Länge.
char [ ( n ) ]
Nicht-Unicode-Zeichenfolgendaten mit fester Länge. n definiert die Zeichenfolgenlänge und muss ein Wert zwischen 1 und 8.000 sein. Die Speichergröße beträgt n Bytes. Auch wenn die Sortierungscodepage Doppelbytezeichen verwendet, ist die Speichergröße nach wie vor n Bytes. Abhängig von der Zeichenfolge kann die Speichergröße von n Bytes weniger als der Wert von n sein. Das ISO-Synonym für char ist character.varchar [ ( n | max ) ]
Nicht-Unicode-Zeichenfolgendaten mit variabler Länge. n definiert die Zeichenfolgenlänge und kann ein Wert zwischen 1 und 8.000 sein. max gibt an, dass die maximale Speichergröße 2^31-1 Bytes (2 GB) beträgt. Die Speicherplatzgröße in Bytes ist der Wert der tatsächlich eingegebenen Daten + 2 Bytes. Die ISO-Synonyme für varchar sind charvarying oder character varying.
Hinweise
Wenn n in einer Datendefinitions- oder Variablendeklarationsanweisung nicht angegeben ist, beträgt die Standardlänge 1. Wird n bei Verwendung der CAST- und CONVERT-Funktionen nicht angegeben, ist die Standardlänge 30.
Objekten, für die char oder varchar verwendet wird, wird die Standardsortierung der Datenbank zugewiesen, es sei denn, mit der COLLATE-Klausel wird eine bestimmte Sortierung zugewiesen. Die Sortierung bestimmt die Codepage, die zum Speichern der Zeichendaten verwendet wird.
Für Sites, die mehrere Sprachen unterstützen, sollte erwogen werden, den Unicode-Datentyp nchar oder nvarchar zu verwenden, um Probleme bei der Zeichenkonvertierung zu minimieren. Wenn Sie char oder varchar verwenden, empfehlen wir Folgendes:
Verwenden Sie char, wenn die Dateneinträge einer Spalte jeweils gleich lang sind.
Verwenden Sie varchar, wenn sich die Dateneinträge einer Spalte in ihrer Größe erheblich unterscheiden.
Verwenden Sie varchar(max), wenn die Dateneinträge einer Spalte unterschliedlich lang und größer als 8.000 Byte sein können.
Wenn OFF für SET ANSI_PADDING festgelegt ist, während CREATE TABLE oder ALTER TABLE ausgeführt wird, wird eine als NULL definierte Spalte vom Typ char als varchar behandelt.
Beispiele
A. Anzeigen des Standardwerts von n bei Verwendung in einer Variablendeklaration
Das folgende Beispiel zeigt, dass der Standardwert von n für die Datentypen char und varchar 1 ist, wenn sie in einer Variablendeklaration verwendet werden.
DECLARE @myVariable AS varchar = 'abc', @myNextVariable AS char = 'abc';
--The following returns 1
SELECT DATALENGTH(@myVariable), DATALENGTH(@myNextVariable);
GO
B. Anzeigen des Standardwerts von n, wenn varchar mit CAST und CONVERT verwendet wird
Das folgende Beispiel zeigt, dass 30 der Standardwert von n ist, wenn der Datentyp char oder varchar in den Funktionen CAST und CONVERT verwendet wird.
DECLARE @myVariable AS varchar(40) = 'This string is longer than thirty characters';
SELECT CAST(@myVariable AS varchar);
SELECT DATALENGTH(CAST(@myVariable AS varchar)) AS 'VarcharDefaultLength';
SELECT CONVERT(char, @myVariable);
SELECT DATALENGTH(CONVERT(char, @myVariable)) AS 'VarcharDefaultLength';
Siehe auch