sexta-feira, 3 de agosto de 2012

Como converter tipos usando CAST e CONVERT no SQL Server

Vamos falar sobre como converter tipos de dados no SQL Server utilizando CAST e CONVERT. O “Castting” é a conversão de um tipo de dados em outro desde que sejam compatíveis entre si, como, por exemplo, um número inteiro em um texto ou um valor real em inteiro. Também é possível converter um valor convertido, por exemplo, um binário em texto e depois em inteiro.
Existem duas categorias de conversões de tipos de dados:
As conversões implícitas, que são invisíveis ao usuário, convertem automaticamente os dados de um tipo de dados para outro.
Por exemplo: se um smallint é comparado a um int, o smallint é implicitamente convertido para int antes de prosseguir com a comparação.
Já as conversões explícitas são aquelas onde é necessária a utilização das funções CAST ou CONVERT.

Por exemplo: converter o valor numérico 157.27 em uma cadeia de caracteres ‘R$ 157,27′:
CAST (157.27 AS VARCHAR (10))

As funções existentes no SQL Server para converter tipos de dados são a CAST e CONVERT, porém o primeiro é mais aconselhado por ser baseado no padrão SQL-92.
Fique atento sempre às conversões que estão sendo feitas, pois alguns tipos de conversões não são permitidas, como, por exemplo, transformar um datttime em real ou float.

Estrutura básica do CAST

CAST([valor a ser convertido] AS [tipo de dados para conversão])

Estrutura básica do CONVERT

CONVERT( [tipo de dados para conversão], [valor a ser convertido])
Alguns Exemplos (Execute no SQL Server e veja o resultado):

SELECT CAST(20.1548 AS INT) ;
-- Resultado = 20

SELECT CAST(CAST(0x313233 AS VARCHAR) AS DECIMAL)
-- Resultado = 123

SELECT CAST(10.3496847 AS money)
-- Resultado = 10.3497

SELECT 'R$ ' + CAST(10.3496847 AS VARCHAR(12))
-- Resultado = R$ 10.3496847

SELECT 'R$ ' + CAST(CAST(10.3496847 AS money) AS VARCHAR(10))
-- Resultado = R$ 10.35

Fonte: http://www.bau-de-dev.com/banco-de-dados/sql-server/como-converter-tipos-usando-cast-e-convert-no-sql-server
Por Posted by Rodrigo Bravo in SQL Server on novembro 22, 2010

Nenhum comentário:

Postar um comentário