char and varchar (Transact-SQL)

Czy znak typy danych o stałej długości, lub o zmiennej długości.

  • char [ ( n ) ]
    Fixed-length, non-Unicode character data with a length of n bytes.n must be a value from 1 through 8,000.Limit rozmiaru składowania jest n Liczba bajtów. Synonim ISO char jest character.

  • varchar [ ( n | max ) ]
    Variable-length, non-Unicode character data.n can be a value from 1 through 8,000.max indicates that the maximum storage size is 2^31-1 bytes.Limit rozmiaru składowania jest rzeczywistej długości danych wprowadzanych + 2 bajtów.Wprowadzone dane mogą być długość 0 znaków.The ISO synonyms for varchar are char varying or character varying.

Remarks

Kiedy n nie określono w definicja danych lub instrukcja deklaracja zmiennej domyślną długość wynosi 1. Kiedy n nie określono podczas korzystania z funkcji CAST i CONVERT domyślną długość wynosi 30.

Obiekty, które używają char lub varchar przypisano domyślnym sortowaniem bazy danych, chyba że określonego sortowanie jest przypisywane przy użyciu klauzula COLLATE. Sortowanie Określa strona kodowa, która jest używana do przechowywania danych znakowych.

Jeśli masz witryn, które obsługują wiele języków, należy rozważyć użycie Unicode nchar lub nvarchar typy danych, aby zminimalizować problemy przy konwersji znaków. Jeśli używasz char lub varchar, zalecane jest następujące:

  • Użycie char Jeśli rozmiary pozycji kolumna danych są zgodne.

  • Użycie varchar Jeśli rozmiary pozycji kolumna danych znacznie się różnią.

  • Użycie varchar(max) Kiedy rozmiary pozycji kolumna danych znacznie się różnią, a rozmiar może przekraczać 8000 bajtów.

Jeśli ANSI_PADDING zestaw jest wyłączona, podczas wykonywania instrukcji ALTER tabela lub CREATE tabela char kolumna, która jest definiowana jako NULL jest obsługiwane tak jak varchar.

Jeśli strona kodowa sortowanie używane są znaki dwubajtowe, limit rozmiaru składowania jest nadal n Liczba bajtów. W zależności od tego, ciąg znaków, rozmiar pamięci masowej n bajtów może być mniejsza niż n znaki.

Przykłady

A.Pokazuje wartość domyślną, n, kiedy jest używana w deklaracja zmiennej.

W poniższym przykładzie przedstawiono wartości domyślnej n to 1 do char i varchar typy danych, gdy są one używane w deklaracja zmiennej.

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.Wyświetlanie wartości domyślnej, n, gdy jest używany varchar CAST i CONVERT.

Poniższy przykład pokazuje, że wartość domyślna n to 30 podczas char lub varchar typy danych są używane z CAST i CONVERT funkcje.

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