Compartilhar via


char e varchar (Transact-SQL)

São tipos de dados de caractere de comprimento fixo ou variável.

  • char [ ( n ) ]
    Dados de caractere não-Unicode de comprimento fixo, com um comprimento de n bytes. n deve ser um valor de 1 a 8.000. O tamanho de armazenamento é n bytes. O sinônimo de ISO para char é character.

  • varchar [ ( n | max ) ]
    Dados de caractere não-Unicode de comprimento variável. n pode ser um valor de 1 a 8.000. max indica o tamanho máximo de armazenamento, que é 2^31-1 bytes. O tamanho de armazenamento é o comprimento real dos dados inseridos + 2 bytes. Os dados digitados podem ter 0 caractere de comprimento. Os sinônimos de ISO para varchar são char varying ou character varying.

Comentários

Quando n não é especificado em uma definição de dados ou instrução de declaração de variável, o comprimento padrão é 1. Quando n não é especificado ao usar as funções CAST e CONVERT, o comprimento padrão é 30.

Os objetos que usam char ou varchar recebem o agrupamento padrão do banco de dados, a menos que um agrupamento específico seja atribuído com o uso da cláusula COLLATE. O agrupamento controla a página de código que é usada para armazenar os dados de caractere.

Se tiver sites que suportem vários idiomas, considere o uso dos tipos de dados Unicode nchar ou nvarchar para minimizar problemas de conversão de caracteres. Se você usar char ou varchar, recomenda-se o seguinte:

  • Use char quando os tamanhos das entradas de dados de coluna forem consistentes.

  • Use varchar quando os tamanhos das entradas de dados de coluna variarem consideravelmente.

  • Use varchar(max) quando os tamanhos das entradas de dados de coluna variarem consideravelmente e o tamanho puder exceder 8.000 bytes.

Se SET ANSI_PADDING for OFF quando CREATE TABLE ou ALTER TABLE for executada, uma coluna char definida como NULL será tratada como varchar.

Quando a página de código de agrupamento usar caracteres de dois bytes, o tamanho de armazenamento ainda será n bytes. Dependendo da cadeia de caracteres, o tamanho de armazenamento de n bytes pode ser menos que n caracteres.

Exemplos

A. Mostrando o valor padrão de n quando usado em declaração variável.

O exemplo a seguir mostra que o valor padrão de n é 1 para os tipos de dados char e varchar quando são usados em uma declaração variável.

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. Mostrando o valor padrão de n quando varchar é usado com CAST e CONVERT.

O exemplo a seguir mostra que o valor padrão de n é 30 quando os tipos de dados char ou varchar são usados com as funções CAST e CONVERT.

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