Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Закръгляване на десетични числа в SQL Server 2008

1) select CAST(FLOOR(2 * 3.69) / 2 AS decimal(2, 1)) обработва първия случай - с любезното съдействие на отговор на подобен въпрос във форумите за SQL Server , който адаптирах и бързо проверих.

Имайте предвид, че ако числата, които закръглявате до най-близкия 0.5 може да бъде по-голям (напр. 333.69 => 333.5 ), не забравяйте да посочите повече decimal точност при кастиране (напр. select CAST(FLOOR(2 * 3.69) / 2 AS decimal(10, 1)) ), или може да получите грешка при препълване:

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

Допълнителната прецизност няма да повлияе на крайния резултат (т.е. select CAST(FLOOR(2 * 3.69) / 2 AS decimal(10, 1)) и select CAST(FLOOR(2 * 3.69) / 2 AS decimal(2, 1)) и двете дават 3.5 ); но е разточително, ако числата, които закръглявате, винаги ще бъдат по-малки.

Налични са онлайн препратки с примери за T-SQL FLOOR , CAST и decimal за помощ.

2) select ROUND(142600, -3) обработва втория случай.

Подобна онлайн справка е достъпна за T-SQL ROUND .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Условно изявление в sql заявка на класическа ASP страница

  2. Мога ли да получа резултатите от съхранена процедура в курсор в друга съхранена процедура в SQL

  3. SQL Server обгръща ли Select...Insert Queries в имплицитна транзакция?

  4. Добавете водещи и последващи нули в SQL Server

  5. @@DATEFIRST – Вземете първия ден от седмицата в SQL Server