SQL Server CAST Function

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:

SELECT 1 + '1' AS result;
Code language: PHP (php)

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:

SELECT 1 + CAST(1 AS INT) result;
Code language: PHP (php)

A sintaxe da função CAST() é a seguinte:

CAST ( expression AS target_type )
Code language: CSS (css)

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. Inclui INTBITSQL_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ção length 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:

SELECT CAST(5.95 AS INT) result;
Code language: CSS (css)

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:

SELECT CAST(5.95 AS DEC(3,0)) result;
Code language: CSS (css)

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:

th>Para Tipo de Dadosth> Behavior

numérico

>numérico

Round

money

Round

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:

SELECT CAST('2019-03-14' AS DATETIME) result;
Code language: PHP (php)

A saída é

result-----------------------2019-03-14 00:00:00.000(1 row affected)
Code language: CSS (css)

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:

Tabelas de amostras

A seguinte declaração utiliza a função CAST() para converter as vendas mensais em 2017 para valores inteiros.

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;
Code language: PHP (php)

A imagem seguinte mostra a saída:

Exemplo da função CAST Server CAST

Neste tutorial, aprendeu como utilizar o SQL Server CAST() função para converter um valor de um tipo para outro.

Deixe uma resposta

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