quarta-feira, 29 de agosto de 2012

DATA TYPE PRECEDENCE


Faaaala pessoal,

               Continuando a ideia de precedência do post anterior hoje irei comentar um pouco sobre as conversões implícitas. Quando estamos realizando operações entre mais de um campo, tipicamente em uma consulta, pode acontecer de que os tipos de dados das colunas sejam diferentes. Neste caso, pode acontecer também que o desenvolvedor, aspirante a DBA, esqueça de fazer a conversão:

               SELECT      1 + '2'

               E aí? Qual será o resultado? Vai dar erro? Bom, esse peguinha é mais rodado do que pratinho de micro-ondas. O que acontece é que no SQL existe uma ordem DATA TYPE PRECEDENCE que converte implicitamente a coluna de menor precedência para a de maior. 

               

Confuso não? Essa matriz esta na documentação da MSDN do CAST e do CONVERT, mas resumindo e colocando os tipos mais comuns temos a seguinte fila:

BINARY < CHAR < VARCHAR < TIMESTAMP < TEXT < BIT < TINYINT < SMALLINT < INT < BIGINT < SMALLMONEY < MONEY < DECIMAL < SMALLDATETIME < DATETIME < XML

            Onde o BINARY possui a menor precedência e o XML a maior. Vale lembrar que quando os tipos de dados não são compatíveis (converter um BIT p/ XML) o SQL vai cuspir um erro de conversão. E se a conversão implícita não é a desejada, pode-se explicitar para atender a sua regra de negocio. Em minha opinião tente fugir de conversões, mas se tiver de fazer, sempre faça explicitamente!

           Link p/ a precedência completa.

            Exame 70-461: Caros, terminei o curso da Microsoft essa semana e agora chegou a hora de marcar a prova. Após esta publicação irei cuidar deste assunto!

Nenhum comentário:

Postar um comentário