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