Char é de largura fixa, Isso significa que o tamanho de armazenamento do valor char é igual ao tamanho máximo da coluna/ Variável.
Varchar é de comprimento variável. O tamanho do armazenamento usado pelo Varchar depende dos caracteres reais salvos.
Exemplo 1:
Vamos criar algumas variáveis e salvar a mesma string e verificar o armazenamento usado pela função datalength no SQL Server.Declare @Variable1 CHAR(20)Declare @Variable2 VARCHAR(20)SET @ Variable1='TechBrothersIT'SET @Variable2='TechBrothersIT'Selecione datalength(@Variable1) como VarLength1, datalength(@Variable2) como VarLength2Qual é a diferença entre CHAR e VARCHAR no SQL Server - T-SQL Tutorial
Como você pode veja acima, Char ocupou 20 Bytes de espaço para 20 caracteres mesmo salvando apenas 14 caracteres. Por outro lado, Varchar usou apenas 14 bytes para armazenar 14 caracteres.
Exemplos 2:
Vamos criar uma tabela com duas colunas, uma vez char e outro tipo de dados varchat. Armazene as mesmas informações e verifique o espaço ocupado por cada valor usando a função datalength.Criar tabela dbo.CharVsVarChar( CHARName CHAR(50),VARName VARCHAR(50))insert into dbo.CharVsVarCharValores('Aamir','Aamir'),('TechBrothersIT','TechBrothersIT'),('Raza','Raza')goSelecione DataLength(CharName) AS CHARNameLength,DataLength(VarName) AS VarNameLength From dbo.CharVsVarCharChar vs Varchar no SQL Server - SQL Server / Tutorial T-SQL Podemos ver que Char sempre ocupa o mesmo espaço independente do número ou caracteres salvos. Por outro lado, o espaço ocupado do Varchar varia de acordo com o número de caracteres salvos.
Nos casos em que sabemos que vamos armazenar um número fixo de caracteres, podemos usar o Char, caso contrário, usar o Varchar.