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';
Consulte também