Summary: neste tutorial, aprenderá como usar a função SQL Server CAST()
para converter um valor ou uma expressão de um tipo para outro.
Introdução para a função CAST() do SQL Server
Vejamos a seguinte consulta:
Code language: PHP (php)SELECT 1 + '1' AS result;
Retorna 2 como um número:
result-----------2(1 row affected)
Nesta declaração, o SQL Server converte implicitamente a cadeia de caracteres '1'
para o número 1
.
Quando se utilizam dois valores com tipos de dados diferentes, o SQL Server tentará converter o tipo de dados mais baixo para o mais alto antes de poder processar o cálculo. Isto é conhecido como uma conversão implícita no SQL Server.
Em contraste com as conversões implícitas, temos conversões explícitas onde se chama a função CAST()
para converter explicitamente um valor de um tipo para outro:
Code language: PHP (php)SELECT 1 + CAST(1 AS INT) result;
A sintaxe da função CAST()
é a seguinte:
Code language: CSS (css)CAST ( expression AS target_type )
Nesta sintaxe:
-
expression
pode ser um valor literal ou uma expressão válida de qualquer tipo que será convertida. -
target_type
é o tipo de dados alvo para o qual se pretende converter a expressão. IncluiINT
BIT
SQL_VARIANT
, etc. Note-se que não pode ser um tipo de dados alias. -
length
é um número inteiro opcional que especifica o comprimento do tipo alvo. A funçãolength
tem como padrão 30.
O CAST()
devolve a expressão convertida para o tipo de dados alvo.
SQL Server CAST() exemplos de funções
Vamos tomar alguns exemplos de utilização da função CAST()
.
A) Usando a função CAST() para converter um decimal para um exemplo inteiro
Este exemplo usa a função CAST()
para converter o número decimal 5.95
para um número inteiro:
Code language: CSS (css)SELECT CAST(5.95 AS INT) result;
Aqui está a saída:
result-----------5(1 row affected)
B) Usando a função CAST() para converter um decimal para outro decimal com comprimento diferente
O exemplo seguinte usa a função CAST()
para converter o número decimal 5.95 para outro número decimal com a escala de zero:
Code language: CSS (css)SELECT CAST(5.95 AS DEC(3,0)) result;
A saída é a seguinte:
result-------6
Quando se converte um valor dos tipos de dados em diferentes lugares, o SQL Server retornará um resultado truncado ou um valor arredondado com base nas seguintes regras:
From Data Tipo | ||
---|---|---|
numérico | numérico | Round |
int | Truncate | |
money | ||
money | int | Round |
numeric | Round | |
float | int | Truncate |
float | numeric | Round |
float | datetime | Round |
datetime | int |
C) Usando a função CAST() para converter uma string para um exemplo de data/hora
Este exemplo usa a função CAST()
para converter a string '2019-03-14'
para uma data/hora:
Code language: PHP (php)SELECT CAST('2019-03-14' AS DATETIME) result;
A saída é
Code language: CSS (css)result-----------------------2019-03-14 00:00:00.000(1 row affected)
D) Usando a função CAST() com operadores aritméticos
Usaremos a função sales.orders
e sales.order_items
tabelas da base de dados de amostras para a demonstração:
A seguinte declaração utiliza a função CAST()
para converter as vendas mensais em 2017 para valores inteiros.
Code language: PHP (php)SELECT MONTH(order_date) month, CAST(SUM(quantity * list_price * (1 - discount)) AS INT) amountFROM sales.orders o INNER JOIN sales.order_items i ON o.order_id = i.order_idWHERE YEAR(order_date) = 2017GROUP BY MONTH(order_date)ORDER BY month;
A imagem seguinte mostra a saída:
Neste tutorial, aprendeu como utilizar o SQL Server CAST()
função para converter um valor de um tipo para outro.