首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

資料庫中保留小數位的三大函數:ROUND、CEIL、FLOOR實戰指南

     編輯:MySQL 資料庫相關知識

資料處理中常需對數值進行精度控制:四捨五入、向上取整、向下取整。主流資料庫均提供標準函數,本文匯總Oracle/MySQL/PostgreSQL/SQL Server通用語法與實戰技巧。

三大核心函數對比

函數語義行為典型場景
ROUND(n, d)四捨五入保留d位小數,d=0為整數,d<0為十位百位捨入金額顯示、報表統計、精度控制
CEIL(n) / CEILING(n)向上取整(天花板)返回≥n的最小整數分頁計算、資源配額向上、最小批次數
FLOOR(n)向下取整(地板)返回≤n的最大整數分頁偏移、索引區間下界、截斷小數

保留N位小數通用技巧:乘除法

若資料庫ROUND不支援第二參數(如舊版MySQL),或需統一跨庫邏輯:

-- 保留1位小數:四捨五入
SELECT ROUND(10.98 * 10) / 10 FROM dual;  -- 11.0

-- 保留1位小數:向上取整
SELECT CEIL(10.63 * 10) / 10 FROM dual;   -- 10.7

-- 保留1位小數:向下取整
SELECT FLOOR(10.68 * 10) / 10 FROM dual;  -- 10.6

原理:乘以10^N → 整數運算 → 除以10^N 還原。

跨資料庫函數名差異

函數OracleMySQLPostgreSQLSQL Server
四捨五入ROUNDROUNDROUNDROUND
向上取整CEILCEIL / CEILINGCEIL / CEILINGCEILING
向下取整FLOORFLOORFLOORFLOOR
截斷(不四捨五入)TRUNCTRUNCATETRUNCTRUNCATE / CAST

進階場景:金融級精度控制

  • 銀行家捨入法(五捨六入,五到偶數):ROUND標準行為多為此法,確認版本文檔
  • 固定精度類型:儲存層面用DECIMAL(19,4)、NUMERIC,避免浮點誤差
  • 負數處理:CEIL(-1.2) = -1,FLOOR(-1.2) = -2,符合數學定義

效能提示

  • 這些函數為標量運算,CPU開銷極低,可放心用於WHERE/SELECT/GROUP BY
  • 避免在大表WHERE中對欄位做函數運算(導致索引失效),改寫為範圍查詢

掌握三大取整函數與乘除法技巧,輕松應對跨資料庫的精度控制需求。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved