單行函數
①.字符函數
LOWER(x):將x中的每個單詞都轉換成小寫
UPPER(x):將x中的每個單詞都轉換成大寫
INITCAP(x): 將x中的每個單詞的首字母轉換成大寫
CONCAT(x,y):用於將y添加到x之後,與||功能一樣
SUBSTR(x,start[,length]): 用於從x中取得從start位置開始的一個子字符串,
可選參數length:指定子字符串的長度,若未給定,一直取到字符串的最後
LENGTH(x):返回x中字符的個數
INSTR(x,find_string[,start][,occurence]):在x中查找find_string,返回find_string所在的位置,
可選參數start:說明從x中的哪個位置開始查找,第一個位置為1.
可選參數occurence:說明應該返回find_string第幾次出現的位置
LPAD(x, width [,pad_string]):用於將x的左邊補齊空格,使總長度達到width個字符
可選參數pad_string:若給定,就將x的左邊補齊pad_string字符
RPAD(x,width[,pad_string]):用於將x的右邊補齊空格,使總長度達到width個字符
可選參數pad_string:若給定,就將x的右邊補齊pad_string字符
TRIM(x[,trim_string]):用於從x的左右兩邊截去一些空格
可選參數trim_string:若給定,則從x的左右兩邊截去一些trim_string字符
REPLACE(x,search_string,repalce_string):用於在x中查找search_string,並將其替換為replace_string
②數字函數
四捨五入:ROUND(x[,y])用於計算對x取整結果
可選參數y:說明對第幾位小數取整,如果沒有指定y,則對x在0位小數處取整
如果y為負數,則對x在小數點的左邊的第|y|位處取整
截斷:TRUNC(x[,y])用於計算對x截斷的結果
可選參數y:說明對第幾位小數截斷,如果沒有指定y,則對x在0位小數處截斷
如果y是負數,則對x在小數點的左邊的第|y|位處截斷
求余:MOD(x,y):用於計算x除以y所得的余數
③日期函數
MONTHS_BETWEEN(date1,date2):兩個日期相差的月數
ADD_MONTHS(date1,addMonth):向指定日期中加上若干月數
NEXT_DAY(date1,'星期一'):返回下一個星期一的日期
LAST_DAY(date1):本月的最後一天
ROUND(date1,'year'):把date1按年四捨五入,month、day、hh、mi分別是按月、日、時、分,進行四捨五入
TRUNC(date,'month'):把date1按年截斷,month、day、hh、mi分別是按月、日、時、分,進行截斷
④轉換函數
TO_CHAR(date, 'format_model'):按format_model格式,格式化date:"yyyy-mm-dd HH24:MI:SS",返回一個字符串
TO_CHAR(number, 'format_model'):按format_model格式,格式化number:"$99,999.99",返回一個字符串
TO_DATE(char[, 'format_model']):使用 TO_DATE 函數將字符按format_model格式轉換成日期:"yyyy-mm-dd HH24:MI:SS"
TO_NUMBER(char[, 'format_model']):使用 TO_NUMBER 函數將字符按format_model格式轉換成數字:"$99,999.99"
⑤通用函數:這些函數適用於任何數據類型,同時也適用於空值
NVL (expr1, expr2):如果expr1為null,則返回expr2,若不為null,則返回expr1
NVL2 (expr1, expr2, expr3)如果expr1不為null,則返回expr2,若為null,則返回expr3
NULLIF (expr1, expr2):expr1與expr2相等返回NULL,不等返回expr1
COALESCE (expr1, expr2, ..., exprn):依次參考各參數表達式,遇到非null值即停止並返回該值。
如果所有的表達式都是空值,最終將返回一個空值。使用COALESCE在於大部分包含空值的表達式最終將返回空值。
⑥條件表達式
1)CASE 表達式
case..when..then..
Case表達式,是可以在sql中使用if ..then..else的邏輯判斷,而避免使用PL/SQL的有效方法。
在sql中主要有兩種:簡單case和搜索case,在plsql中還有兩種case 語句,與decode 類似。(有一定的區別)
簡單的case:
語法:case exp when comexp then returnvalue
..when comexp then returnvalue
Else Returnvalue
End
使用規則case簡介。
Case到end之間相當於一個具體的值,可以做運算,取別名,嵌套case 等等。只要把case到end當作一個運算結果的表達式就可以了。
《注意,中間一直到end 都沒有其他標點符號》
搜索case:
SELECT cust_last_name,
CASE credit_limit WHEN 100 THEN ’Low’
WHEN 5000 THEN ’High’
ELSE ’Medium’
END
FROM customers;
搜索case例子
select case when id between 1 and 10 then 'low'
when id between 20 and 30 then 'mid'
when id between 40 and 50 then 'high'
else 'unknow'
end
from product;
update emp set
salary=
case when salary<2000 then salary*1.1
when salary between 2000 and 4000 then salary*1.05
when salary>4000 then salary*1.04
else
null
end;
select case when name like '全球%' then 'true'
when name like '神州行' then 'false'
else 'mm'
end
from trademark;
比較操作,可以使用like,between … and ..,!=,<,>=等操作符以及其他返回boolean類型的操作符。
簡單case和searched case之間的區別:
1. 簡單case只能是when後面的表達式完全匹配case後的表達式,相當於 =,所以也不能匹配null。
2. searched case可以作為比較條件,那麼可以使用like,!=,between ..and,<,=,is null,is not null等,比簡單case的使用更加廣泛,完全可以替代簡單case。
2)DECODE 函數
DECODE 中的if-then-else邏輯
在邏輯編程中,經常用到If – Then –Else 進行邏輯判斷。在DECODE的語法中,實際上就是這樣的邏輯處理過程。
它的語法如下:
DECODE(value, if1, then1, if2,then2, if3,then3, . . . else )
Value 代表某個表的任何類型的任意列或一個通過計算所得的任何結果。
當每個value值被測試,如果value的值為if1,Decode 函數的結果是then1;
如果value等於if2,Decode函數結果是then2;等等。事實上,可以給出多個if/then 配對。
如果value結果不等於給出的任何配對時,Decode 結果就返回else 。
需要注意的是,這裡的if、then及else 都可以是函數或計算表達式。
⑦嵌套函數
F3(F2(F1(col,arg1),arg2),arg3)
單行函數可以嵌套。嵌套函數的執行順序是由內到外