Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

3 maneiras de converter um inteiro em decimal no SQL Server


Aqui estão três opções para converter um número inteiro em um valor decimal no SQL Server usando T-SQL.

O CAST() Função


O CAST() função converte uma expressão de um tipo de dados para outro:
SELECT CAST(275 AS DECIMAL(5, 2));

Resultado:
275.00

Neste exemplo, convertemos um inteiro (275 ) para um valor decimal com precisão de 5 e com 2 casas decimais.

Decimal e numérico são sinônimos e podem ser usados ​​de forma intercambiável. Portanto, podemos ajustar nosso exemplo da seguinte forma para obter o mesmo resultado:
SELECT CAST(275 AS NUMERIC(5, 2));

Resultado:
275.00

É importante lembrar de ajustar a precisão conforme necessário:
SELECT CAST(18301275 AS DECIMAL(10, 2));

Resultado:
18301275.00

Se o argumento de precisão não for grande o suficiente, ocorrerá um erro:
SELECT CAST(18301275 AS DECIMAL(9, 2));

Resultado:
Msg 8115, Level 16, State 8, Line 1
Arithmetic overflow error converting int to data type numeric.

O CONVERT() Função


O CONVERT() função faz a mesma coisa que CAST() , exceto com uma sintaxe ligeiramente diferente:
SELECT CONVERT(DECIMAL(5, 2), 275);

Resultado:
275.00

Use um operador aritmético


Outra opção é usar um operador aritmético, como um operador de multiplicação:
SELECT 275 * 1.00;

Resultado:
275.00

Neste exemplo, multiplicamos o inteiro por 1.00 .

No SQL Server, sempre que um operador combina expressões de diferentes tipos de dados, o tipo de dados com menor precedência é primeiro convertido no tipo de dados com maior precedência. A operação então retorna o tipo de dados do argumento com a precedência mais alta.

No SQL Server, decimal tem uma precedência mais alta para integer.

Ao multiplicá-lo por 1,00, não estamos alterando a parte inteira. Estamos simplesmente convertendo para decimal e adicionando a parte fracionária.

Consulte Precedência de Tipo de Dados no SQL Server para obter uma lista de tipos de dados em ordem de precedência.