Vamos pensar um pouco – Desafio de Janeiro

Galera, estamos iniciando 2016 e os estudos continuam, como sempre quero ajudar vocês, então vou começar a postar aqui alguns pequenos desafios que passo no dia a dia.

Duvidas minha, duvidas de desenvolvedores, analistas e quem sabe você também não está passando por essa dúvida.

Então vamos ao cenário:

Estou declarando uma variável com o tipo de dados Varchar(MAX) que segundo a documentação do SQL Server me da a possibilidade de até 2^31-1 bytes (2,147,483,647 bytes or 2GB – 1 bytes) caracteres, blz?

Logo depois eu insiro na minha variável 8 mil vezes a letra A e 8 mil vezes a letra B isso utilizando o replace. Então ficaria + ou – assim:

AAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBB

Ou seja, 16 mil caracteres, para fazer o teste real e verificar se 2 + 2 = 4 utilizei a função LEN() que me retorna o numero de caracteres dentro de uma coluna.

Vamos ver como ficou a query:

declare @teste as varchar(max)

set @teste = replicate( 'A',8000) +  replicate( 'B',8000)

select Len(@teste)

print @teste

Incrivelmente minha soma 8000 A + 8000 B não me retornou 16.000, então o que houve?

Vamos ver o resultado do SQL:

guia dba

Então o que houve?

Esse é o nosso desafio Guia DBA, deixe aqui a sua resposta, comente aqui em baixo e ajude a galera.

Caso não consiga concluir o desafio nos mande um e-mail e te mandamos a resposta.

Gostou deste artigo? Então você vai gostar do treinamento Guia DBA que vai tornar você um especialista em otimização, clique aqui e adquira o “Curso SQL Server 2014” e receba também “O passo a passo para otimização”.

1 Comentário

  1. Lucas Luis

    O erro se da pelo de fato que a variável do tipo “varchar” só aceita até 8000 caracteres .

    Responder

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios são marcados com *

Subscribe!

*