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

Oracle SQL 單行函數與組函數速查手冊(含示例)

     編輯:Oracle 資料庫相關知識

字符函數

函數語法示例結果
ASCIIASCII('A')SELECT ASCII('A') FROM dual;65
CHRCHR(65)SELECT CHR(65) FROM dual;A
CONCATCONCAT('010-','88888888')SELECT CONCAT('010-','88888888') FROM dual;010-88888888
INITCAPINITCAP('smith')SELECT INITCAP('smith') FROM dual;Smith
INSTRINSTR('oracle traning','ra',1,2)SELECT INSTR('oracle traning','ra',1,2) FROM dual;9
LENGTHLENGTH('高乾競')SELECT LENGTH('高乾競') FROM dual;3
LOWERLOWER('AaBb')SELECT LOWER('AaBb') FROM dual;aabb
UPPERUPPER('AaBb')SELECT UPPER('AaBb') FROM dual;AABB
LPADLPAD('gao',10,'*')SELECT LPAD('gao',10,'*') FROM dual;*******gao
RPADRPAD('gao',10,'*')SELECT RPAD('gao',10,'*') FROM dual;gao*******
LTRIMLTRIM(' gao ',' ')SELECT LTRIM(' gao ',' ') FROM dual;gao
RTRIMRTRIM(' gao ',' ')SELECT RTRIM(' gao ',' ') FROM dual; gao
TRIMTRIM(' gao ')SELECT TRIM(' gao ') FROM dual;gao
SUBSTRSUBSTR('13088888888',3,8)SELECT SUBSTR('13088888888',3,8) FROM dual;08888888
REPLACEREPLACE('he love you','he','i')SELECT REPLACE('he love you','he','i') FROM dual;i love you
SOUNDEXSOUNDEX('weather')SELECT * FROM t WHERE SOUNDEX(col)=SOUNDEX('weather');匹配 weather/wether
TRANSLATETRANSLATE('fumble','uf','ar')SELECT TRANSLATE('fumble','uf','ar') FROM dual;ramble

數字函數

函數示例結果
ABSABS(-100)100
ACOSACOS(-1)3.1415927
ASINASIN(0.5).52359878
ATANATAN(1).78539816
CEILCEIL(3.14)4
COSCOS(-3.1415927)-1
COSHCOSH(20)242582598
EXPEXP(1)2.7182818
FLOORFLOOR(2345.67)2345
LNLN(2.7182818).99999999
LOGLOG(2,4)2
MODMOD(10,3)1
POWERPOWER(2,10)1024
ROUNDROUND(55.5), ROUND(12345,-2)56, 12300
SIGNSIGN(-100)-1
SINSIN(1.57079)1
SINHSINH(20)242582598
SQRTSQRT(64)8
TANTAN(20)2.2371609
TANHTANH(20)1
TRUNCTRUNC(124.1666,-2)100

日期函數

函數示例結果
SYSDATESYSDATE2024-05-09 14:30:00
ADD_MONTHSADD_MONTHS(TO_DATE('199912','YYYYMM'),2)200002
LAST_DAYLAST_DAY(SYSDATE)2024-05-31
MONTHS_BETWEENMONTHS_BETWEEN('19-DEC-1999','19-MAR-1999')9
NEW_TIMENEW_TIME(SYSDATE,'PDT','GMT')時區轉換
NEXT_DAYNEXT_DAY('18-MAY-2001','FRIDAY')25-MAY-2001
ROUNDROUND(SYSDATE,'HH')整點
TRUNCTRUNC(SYSDATE,'MI')整分

轉換函數

函數用途示例
TO_CHAR日期/數字 → 字符TO_CHAR(SYSDATE,'YYYY/MM/DD HH24:MI:SS')
TO_DATE字符 → 日期TO_DATE('2024-05-09','YYYY-MM-DD')
TO_NUMBER字符 → 數字TO_NUMBER('1999')
CHARTOROWID字符 → ROWIDCHARTOROWID('AAAA...')
ROWIDTOCHARROWID → 字符ROWIDTOCHAR(ROWID)
HEXTORAW十六進制 → RAWHEXTORAW('FF')
RAWTOHEXRAW → 十六進制RAWTOHEX(HEXTORAW('FF'))
CONVERT字符集轉換CONVERT('str','US7ASCII','WE8ISO8859P1')
TO_MULTI_BYTE單字節 → 多字節TO_MULTI_BYTE('A')
TO_SINGLE_BYTE多字節 → 單字節TO_SINGLE_BYTE('全')

其他常用單行函數

函數說明示例
DECODEIF-THEN-ELSEDECODE(cmd,2,'INSERT',3,'SELECT','OTHER')
DUMP內部表示調試DUMP('WORLD',1017,8,5) → Typ=1 Len=5...
EMPTY_BLOB/CLOBLOB 初始化INSERT INTO t VALUES (EMPTY_BLOB());
GREATEST最大值GREATEST('AA','AB','AC') → 'AC'
LEAST最小值LEAST('啊','安','天') → '啊'
UID當前用戶 IDSELECT UID FROM dual;
USER當前用戶名SELECT USER FROM dual;
USERENV會話環境信息USERENV('SESSIONID'), USERENV('LANGUAGE')
VSIZE內部字節數VSIZE('ABC') → 3
BFILENAME外部文件定位器BFILENAME('LOB_DIR','image.gif')

組函數(聚合函數)

函數語法示例
AVGAVG([DISTINCT|ALL] expr)AVG(DISTINCT sal) → 忽略重複薪資
COUNTCOUNT({*|DISTINCT|ALL} expr)COUNT(*) → 含 NULL 行數
MAXMAX([DISTINCT|ALL] expr)MAX(sal)
MINMIN([DISTINCT|ALL] expr)MIN(sal)
SUMSUM([DISTINCT|ALL] expr)SUM(sal)
STDDEVSTDDEV([DISTINCT|ALL] expr)標準差
VARIANCEVARIANCE([DISTINCT|ALL] expr)方差

分組查詢實例

-- 基礎分組
SELECT deptno, COUNT(*), SUM(sal) FROM scott.emp GROUP BY deptno;

-- HAVING 過濾分組
SELECT deptno, COUNT(*), SUM(sal) FROM scott.emp
GROUP BY deptno HAVING COUNT(*) >= 5;

-- ORDER BY 排序分組結果
SELECT deptno, COUNT(*) cnt FROM scott.emp
GROUP BY deptno ORDER BY cnt DESC;

核心提示

  • 單行函數可用於 SELECT/WHERE/ORDER BY/SET/VALUES;組函數僅用於 SELECT/HAVING/ORDER BY
  • WHERE 不能使用組函數,必須用 HAVING
  • 組函數自動忽略 NULL(COUNT(*) 除外)
  • 函數嵌套遵循「由內而外、由左至右」
  • 日期/數字格式模型參考 Oracle 官方文檔「Format Models」
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved