單行函數:對於每一行數據進行計算後獲得一行輸出結果、express
SQL單行函數根據數據類型分爲字符函數、數字函數、日期函數、轉換函數,另外還有一些通用函數。例如NVL函數 函數
concat:鏈接字符串, substr:分隔字符串, length:字符串長度spa
instr:字符串中首次出現字母的位置3d
lpad:左端補齊對象
rpad:右端補齊blog
trim:在字符串收尾去掉相應的字符,中間的保留字符串
replace:所有替換it
round:四捨五入io
trunc:截斷ast
mod:求餘
在日期上加減數字
日期相減
MONTHS_BETWEEN:兩個日期相差的天數
ADD_MONTHS:向指定日其中添加若干月數
NEXT_DAY:指定日期的下一個星期*對應的日期
LAST_DAY:本月的最後一天
-- 來公司的員工中,hire_date是每月倒數次日來公司的有哪些?
ROUND:日期四捨五入
TRANC:日期截斷
數據類型轉換:隱性轉換和顯性轉換
隱式轉換
顯性轉換
日期轉換爲字符串
字符串轉化爲日期
在轉化時要穿插字符的時候,要使用雙引號
數字轉字符串(貨幣符號:$ 美圓 , L 當地貨幣符號)
字符串轉數字
NVL(exp1,exp2):若exp1不爲空,則使用exp1自己,若exp1爲空,則使用exp2
1.能夠使用的數據類型有日期、字符、數字
2.函數的通常形式:
-- 求公司員工的年薪(含commission_pct) 獎金率
-- 輸出last_name,department_id,當department_id爲null時,顯示‘沒有部門’。
NVL2(exp1,exp2,exp3):若exp1爲空,返回exp2,不然,返回exp3
-- 查詢員工的獎金率,若爲空,返回0.01, 若不爲空,返回實際獎金率+0.015
NULLIF(exp1,exp2):exp1等於exp2時返回null,不等時返回exp1
比較員工姓和名的長度,相同返回null,不一樣返回名的長度
COALESCE(不經常使用)
在SQL語句中使用IF-THEN-ELSE邏輯
使用兩種方法
-- 查詢部門號爲 10, 20, 30 的員工信息, 若部門號爲 10, 則打印其工資的 1.1 倍, 20 號部門, 則打印其工資的 1.2 倍, 30 號部門打印其工資的 1.3 倍數
在須要使用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])