第三章 單行函數
Oracle基礎筆記二1.單行函數:
操作數據對象
接受參數返回一個結果
只對一行進行變換
每行返回一個結果
可以轉換數據類型
可以嵌套
參數可以是一列或一個值
2.大小寫控制函數:
LOWER('SQL Course') sql course
UPPER('SQL Course') SQL COURSE
INITCAP('SQL Course') Sql Course
3.字符控制函數:
CONCAT('Hello', 'World') HelloWorld
SUBSTR('HelloWorld',1,5) Hello
LENGTH('HelloWorld') 10
INSTR('HelloWorld', 'W') 6
LPAD(salary,10,'*') *****24000
RPAD(salary, 10, '*') 24000*****
TRIM('H' FROM 'HelloWorld') elloWorld
REPLACE(‘abcd’,’b’,’m’) amcd
4.數字函數:
ROUND: 四捨五入
ROUND(45.926, 2) 45.93
TRUNC: 截斷
TRUNC(45.926, 2) 45.92
MOD: 求餘
MOD(1600, 300) 100
5.日期:
Oracle 中的日期型數據實際含有兩個值: 日期和時間。
函數SYSDATE 返回:日期 時間
日期的數學運算:
①在日期上加上或減去一個數字結果仍爲日期。
②兩個日期相減返回日期之間相差的天數。
日期不允許做加法運算,無意義
③可以用數字除24來向日期中加上或減去天數。
6.日期函數:
MONTHS_BETWEEN 兩個日期相差的月數
ADD_MONTHS 向指定日期中加上若干月數
NEXT_DAY 指定日期的下一個星期 * 對應的日期
LAST_DAY 本月的最後一天
ROUND 日期四捨五入
TRUNC 日期截斷
例如:
MONTHS_BETWEEN ('01-SEP-95','11-JAN-94')-------->19.6774194
ADD_MONTHS ('11-JAN-94',6) -------->'11-JUL-94'
NEXT_DAY ('01-SEP-95','FRIDAY') -------->'08-SEP-95'
LAST_DAY('01-FEB-95') -------->'28-FEB-95'
Assume SYSDATE = '25-JUL-95':
ROUND(SYSDATE,'MONTH') 01-AUG-95
ROUND(SYSDATE ,'YEAR') 01-JAN-96
TRUNC(SYSDATE ,'MONTH') 01-JUL-95
TRUNC(SYSDATE ,'YEAR') 01-JAN-95
7.隱式數據類型轉換:自動
顯式數據類型轉換:
①TO_CHAR函數對日期的轉換:
TO_CHAR(date, 'format_model')
格式:
必須包含在單引號中而且大小寫敏感。
可以包含任意的有效的日期格式。
日期之間用逗號隔開。
SELECT TO_CHAR(sysdate,‘yyyy-mm-dd hh:mi:ss’) FROM dual;
時間格式: HH24:MI:SS AM
使用雙引號向日期中添加字符 DD "of" MONTH
②TO_DATE 函數對字符的轉換:
使用 TO_DATE :
TO_DATE(char[,'format_model'])
使用 TO_DATE 函數將字符轉換成數字:
TO_DATE('2012年10月29日081021','yyyy"年"mm"月"dd"日"hh:mi:ss)
from dual
③TO_CHAR函數對數字的轉換:
TO_CHAR(number, 'format_model')
例如:
SELECT TO_CHAR(salary, '$99,999.00') SALARY
FROM employees
WHERE last_name = 'Ernst';
④TO_NUMBER 函數對字符的轉換 :
使用 TO_NUMBER 函數將字符轉換成日期:TO_NUMBER(char[, 'format_model'])
使用 TO_NUMBER :TO_NUMBER(‘¥1,234,567,890.00’,’L999,999,999,999.99’)
from dual
8.通用函數:
這些函數適用於任何數據類型,同時也適用於空值:
①NVL (expr1, expr2)
將空值轉換成一個已知的值:
可以使用的數據類型有日期、字符、數字。
函數的一般形式:
NVL(commission_pct,0)
NVL(hire_date,'01-JAN-97')
NVL(job_id,'No Job Yet')
②NVL2 (expr1, expr2, expr3) : expr1不爲NULL,返回expr2;爲NULL,返回expr3。
③NULLIF (expr1, expr2) : 相等返回NULL,不等返回expr1
④COALESCE (expr1, expr2, ..., exprn)
COALESCE 與 NVL 相比的優點在於 COALESCE 可以同時處理交替的多個值。
如果第一個表達式爲空,則返回下一個表達式,對其他的參數進行COALESCE 。
9.條件表達式:
在 SQL 語句中使用IF-THEN-ELSE 邏輯
使用兩種方法:
CASE 表達式:
CASE expr WHEN comparison_expr1 THEN return_expr1
[WHEN comparison_expr2 THEN return_expr2
WHEN comparison_exprn THEN return_exprn
ELSE else_expr]
END
DECODE 函數:
DECODE(col|expression, search1, result1 ,
[, search2, result2,...,]
[, default])