Resposta Desafio – CHAR X VARCHAR

Primeiro 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 :)

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>