Resposta Desafio – CHAR X VARCHAR
Posted in Programação on March 16th, 2010 by Silas Mendes – Be the first to commentPrimeiro tenho que registrar que boa parte das pessoas pra quem enviei o desafio responderam corretamente. Achei interessante a interação e o clima da brincadeira; agora tá na hora de oficializar a resposta. Vamos lá:
Normalmente, quando questionam a diferença entre CHAR e VARCHAR a primeira resposta é: um tem tamanho fixo, o outro tem tamanho variável. Mas já que o CHAR tem tamanho fixo, o que acontece quando inserimos um dado que não ocupa todo o espaço reservado? E além disso, quando inserimos um dado num campo CHAR em qual direção o dado é inserido?
Então, ninguém melhor que o Books Online para responder:
Se um valor mais curto que o comprimento da coluna for inserido em uma coluna char NOT NULL, o valor será preenchido à direita, com espaços em branco, até atingir o tamanho da coluna. Por exemplo, se uma coluna estiver definida como char(10) e os dados a serem armazenados forem “music”, o SQL Server armazenará os dados como “music_____”, onde “_” indica um espaço em branco.
Fonte: http://msdn.microsoft.com/pt-br/library/ms175055.aspx
Com as considerações acima, podemos resumir a consulta do desafio a isto:
SELECT
RIGHT('05 ',2) as 'CHAR',
RIGHT('05' ,2) as 'VARCHAR'
Como a função RIGHT está extraindo duas posições à direita (contando com o espaço em branco), o Zero (0) do CHAR é ignorado no resultado.
Valeu pela participação dos amigos, em especial a do amigo Léo Lopes que contribuiu na elaboração da resposta utilizando referências do BOL :)