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

Arredondando para baixo números decimais no SQL Server 2008


1) select CAST(FLOOR(2 * 3.69) / 2 AS decimal(2, 1)) trata do primeiro caso - cortesia de uma resposta a uma pergunta semelhante nos fóruns do SQL Server , que adaptei e verifiquei rapidamente.

Observe que, se os números que você está arredondando para o 0.5 mais próximo poderia ser maior (por exemplo, 333.69 => 333.5 ), certifique-se de especificar mais decimal precisão ao converter (por exemplo, select CAST(FLOOR(2 * 3.69) / 2 AS decimal(10, 1)) ), ou você pode receber um erro de estouro:
Msg 8115, Level 16, State 8, Line 1
Arithmetic overflow error converting numeric to data type numeric.

A precisão extra não afetará o resultado final (ou seja, select CAST(FLOOR(2 * 3.69) / 2 AS decimal(10, 1)) e select CAST(FLOOR(2 * 3.69) / 2 AS decimal(2, 1)) ambos produzem 3.5 ); mas é um desperdício se os números que você está arredondando forem sempre menores.

Referências online com exemplos estão disponíveis para T-SQL FLOOR , CAST e decimal ajudar.

2) select ROUND(142600, -3) trata do segundo caso.

Uma referência online semelhante está disponível para T-SQL ROUND .