char und varchar (Transact-SQL)

Zeichendatentypen, die entweder eine feste oder variable Länge haben.

  • char [ ( n ) ]
    Nicht-Unicode-Zeichendaten fester Länge mit n Byte. n muss ein Wert zwischen 1 und 8.000 sein. Die Speichergröße beträgt n Byte. Das ISO-Synonym für char ist character.

  • varchar [ ( n | max ) ]
    Nicht-Unicode-Zeichendaten variabler Länge. n kann ein Wert von 1 bis 8.000 sein. max gibt an, dass die maximale Speichergröße 2^31-1 Byte beträgt. Die Speichergröße ist die tatsächliche Länge der eingegebenen Daten + 2 Byte. Die eingegebenen Daten können 0 Zeichen lang sein. Die ISO-Synonyme für varchar sind char varying oder character varying.

Hinweise

Wenn n in einer Datendefinitions- oder Variablendeklarationsanweisung nicht angegeben wird, beträgt die Standardlänge 1. Wenn n bei Verwendung der CAST- und CONVERT-Funktionen nicht angegeben wird, beträgt 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.

Auch wenn die Sortierungscodepage Doppelbytezeichen verwendet, ist die Speichergröße nach wie vor n Byte. Abhängig von der Zeichenfolge kann die Speichergröße von n Byte weniger als n Zeichen betragen.

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
DECLARE @myNextVariable AS char
SET @myVariable = 'abc'
SET @myNextVariable = '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)
SET @myVariable = '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';