char i varchar (Transact-SQL)

Są typy danych znaków o stałej długości lub o zmiennej długości.

  • char [ ( n ) ]
    Dane znakowe nie obsługujących kodu Unicode o stałej długości, o długości n bajtów.nmusi mieć wartość od 1 do 8000.Rozmiar magazynu jest n bajtów.ISO synonim char jest character.

  • varchar [ ( n | max ) ]
    Dane znakowe o zmiennej długości, nie obsługujących kodu Unicode.nmoże mieć wartość od 1 do 8000.maxwskazuje maksymalny rozmiar 2 ^ 31-1 bajtów.Rozmiar magazynu jest rzeczywista długość danych wprowadzonych + 2 bajty.Wprowadzone dane mogą być długość 0 znaków.The ISO synonyms for varchar are char varying or character varying.

Uwagi

Gdy n nie jest określona w definicja danych lub deklaracjazmiennejinstrukcjadomyślną długość wynosi 1. Gdy n nie została określona podczas korzystania z funkcji WYTOPU i konwertowanie domyślną długość wynosi 30.

Obiekty używające char lub varchar przypisywane są domyślne sortowanie bazy danych, chyba że określonego sortowanie jest przypisywane przy użyciu klauzulaCOLLATE.sortowanie steruje strona kodowa jest używany do przechowywania danych znakowych.

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

  • Użycie char podczas rozmiary pozycji kolumna danych są spójne.

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

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

Jeśli podczas wykonywania instrukcji ALTER TABLE lub CREATE TABLE, ustaw spowodowałyby jest wyłączenie char kolumna , który jest zdefiniowany jako NULL jest obsługiwany jako varchar.

Podczas sortowanie strona kodowa używa znaków dwubajtowych, rozmiar pamięci masowej jest nadal n bajtów.W zależności od znaków ciąg, rozmiar magazynu n bajtów może być mniejsza niż n znaków.

Przykłady

A.Wyświetlanie wartości domyślne n w deklaracjazmiennej.

Poniższy przykład przedstawia wartość domyślna, n 1 dla char i varchar typy danych, gdy są używane w deklaracjazmiennej.

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 domyślnej wartości n, gdy varchar WYTOPU i PRZEKONWERTUJ go.

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

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