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 SQL-2003-Synonym für char lautet 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 SQL-2003-Synonyme für varchar lauten charvarying oder charactervarying.

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

Siehe auch

Verweis

nchar und nvarchar (Transact-SQL)
CAST und CONVERT (Transact-SQL)
COLLATE (Transact-SQL)
Datentypen (Transact-SQL)
sp_dbcmptlevel (Transact-SQL)

Andere Ressourcen

Auswählen von Sortierungen
Datentypkonvertierung (Datenbankmodul)
Verwenden von char- und varchar-Daten
Verwenden von Unicode-Daten
Schätzen der Größe einer Datenbank

Hilfe und Informationen

Informationsquellen für SQL Server 2005