承接基礎函數,本文深入講解 REPLACE、ROUND/TRUNC 負參數語義、CEIL/FLOOR 取整邊界、MOD/ABS 數學運算,並對比 ROUND 與 TRUNC 在負參數下的差異,幫助您精準掌握數值處理細節。
SELECT REPLACE(ename, 'A', 'a') FROM emp;
-- 僅影響查詢顯示,不修改表數據
ROUND(n, -k) / TRUNC(n, -k) 作用於**小數點左側第 k 位**(十位、百位...)。
| 表達式 | ROUND 結果 | TRUNC 結果 | 解析 |
|---|---|---|---|
| ROUND/TRUNC(555.55, -1) | 560 | 550 | 十位:ROUND 四捨五入,TRUNC 直接截斷 |
| ROUND/TRUNC(555.55, -2) | 600 | 500 | 百位 |
| ROUND/TRUNC(555.55, -3) | 1000 | 0 | 千位 |
記憶口訣:負參數向左數位,ROUND 看下一位決策,TRUNC 直接歸零。
| 函數 | 555.55 | -555.55 | 語義 |
|---|---|---|---|
| CEIL | 556 | -555 | 向上取整(向 +∞) |
| FLOOR | 555 | -556 | 向下取整(向 -∞) |
| ROUND(,0) | 556 | -556 | 四捨五入(遠離零) |
| TRUNC(,0) | 555 | -555 | 截斷小數(向零) |
負數場景下四者行為差異最大,務必實測驗證。
MOD(12, 3) = 0(12 被 3 整除)MOD(10, 3) = 1ABS(-3) = 3,ABS(3) = 3DUAL:虛擬表,專用於函數測試/常量計算SELECT ename, sal,
ROUND(sal * 1.1, -2) AS round_hundred, -- 四捨五入到百位
TRUNC(sal * 1.1, -2) AS trunc_hundred, -- 截斷到百位
CEIL(sal * 1.1 / 100) * 100 AS ceil_hundred -- 向上到百位
FROM emp;