char e varchar (Transact-SQL)
São tipos de dados de cadeia de caracteres de comprimento fixo ou variável.
char [ ( n ) ]
Dados de cadeia de caracteres não Unicode de comprimento fixo. n define o comprimento da cadeia de caracteres e deve ser um valor de 1 a 8.000. O tamanho de armazenamento é n bytes. 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 inferior ao valor de n. O sinônimo ISO de char é character.varchar [ ( n | max ) ]
Dados de cadeia de caracteres não Unicode de comprimento variável. n define o comprimento da cadeia de caracteres e pode ser um valor de 1 a 8.000. max indica o tamanho máximo de armazenamento, que é 2^31-1 bytes (2 GB). O tamanho de armazenamento, em bytes, é o valor dos dados reais inseridos + 2 bytes. 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.
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 = 'abc', @myNextVariable AS char = '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) = '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