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 char varying oder character varying.

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.

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';

Community-Beiträge

HINZUFÜGEN
Anzeigen: