首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 單列函數全攻略:數值函數與格式化轉換完整速查

     編輯:Oracle 資料庫基礎

數值運算函數

函數說明範例結果
ROUND(n, m)四捨五入至小數點後 m 位 (m 可為負數)ROUND(45.923, 1)45.9
ROUND(45.923, 0)46
ROUND(45.923, -1)50
TRUNC(n, m)截斷至小數點後 m 位 (不四捨五入)TRUNC(45.923, 1)45.9
TRUNC(45.923, 0)45
TRUNC(45.923, -1)40
MOD(m, n)m 除以 n 的餘數MOD(1600, 300)100
ABS(n)絕對值ABS(-5)5
SQRT(n)平方根SQRT(2)1.414...
POWER(m, n)m 的 n 次方POWER(2, 3)8
COS(n)餘弦 (弧度)COS(3.14159)-1
CEIL(n)大於等於 n 的最小整數CEIL(2.35)3
FLOOR(n)小於等於 n 的最大整數FLOOR(2.35)2

數值格式化元素 (TO_CHAR 專用)

元素意義範例
9一位數字,正數前置空格,負數前置 -9999
0一位數字,不足補 00000
,千分位分隔符99,999
.小數點999.9
$美元符號$999.9
L本地貨幣符號 (由 NLS_CURRENCY 決定)L999.99
FM移除前後空格/前導零FM999.99
EEEE科學記號9.9EEEE
S正負號置於最前S999.9

實戰範例

SELECT TO_CHAR(sal, '$99,999') AS salary
FROM emp
WHERE ename = 'SCOTT';
-- 輸出: $4,000

說明:實際位數不足格式位數時只顯示實際位數;超出則顯示 ####。

其他常用單列函數

函數說明範例
NVL(expr1, expr2)expr1 為 NULL 回傳 expr2NVL(comm, 0)
DECODE(expr, s1, r1, s2, r2, ..., default)等值比對分支DECODE(1, 1, '男', 2, '女') → '男'
USERENV('LANGUAGE')回傳 Session 語言環境SIMPLIFIED CHINESE_CHINA.ZHS16GBK
GREATEST(expr1, expr2, ...)最大值GREATEST(20,35,18,9) → 35
LEAST(expr1, expr2, ...)最小值LEAST(20,35,18,9) → 9

NULL 值處理最佳實務

  • 算術運算遇 NULL 結果為 NULL,易造成誤判 (如 sal + comm)。
  • 務必用 NVL(comm, 0)、NVL(hiredate, DATE '1997-01-01')、NVL(job, '無') 明確轉換。
  • 12c+ 可改用 COALESCE (標準 SQL) 或 NVL2 (區分 NULL/非 NULL 回傳不同值)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved