使用函數可以完成一系列的操作。數據庫之間的不同,在於對函數的支持上是不一樣。
本次筆記學習函數。函數分為單行函數和多行函數,此處重點學習單行函數。
單行函數分類:
字符函數
數值函數
日期函數
轉換函數
通用函數
字符函數:又分為大小寫控制函數和字符控制函數
1)大小寫空值函數:
LOWER()
UPPER()
INITCAP()
?
1 2 3 4 5 SQL> select lower('SQL COURSE') , upper('sql course') , initcap('SQL course') from dual ; LOWER('SQLCOURSE') UPPER('SQLCOURSE') INITCAP('SQLCOURSE') ------------------ ------------------ -------------------- sql course SQL COURSE Sql Course通過上面的查詢結果,看出:
Lower() 函數的作用是:將字符轉換為小寫。
Upper()函數的作用是:將字符轉換為大寫。
Initcap()函數的作用是:將字符的首字母轉換為大寫。
例:查詢名字是king的雇員信息 ,由於不確定數據庫中名字的大小寫形式,我們引入lower函數和 upper()函數,來保證查詢的有效性。
?
1 2 3 4 5 6 7 8 9 10 11 SQL> select * from emp where lower(ename) = 'king' ; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ----- ---------- --------- ----- ----------- --------- --------- ------ 7839 KING PRESIDENT 1981/11/17 5000.00 10 SQL> select * from emp where ename = upper('king' ); EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ----- ---------- --------- ----- ----------- --------- --------- ------ 7839 KING PRESIDENT 1981/11/17 5000.00 10例:將查詢結果字符的首字母轉換為大寫形式,使用initcap 函數。
?
1 SQL> select initcap(ename) from emp where ename = 'KING';?
1 2 3 INITCAP(ENAME) -------------- King字符控制函數:
concat()
substr()
length()
replace()
例:字符串除了使用‘||’連接之外,還可以使用concat() 函數進行連接 。
?
1 2 3 4 5 6 7 8 9 10 11 SQL> select concat('Hello ' , 'world' ) from dual ; CONCAT('HELLO','WORLD') ----------------------- Hello world SQL> select substr('hello' , 1 , 2) ,length('world') , replace('sql' , 'q' , 'X') from dual ; SUBSTR('HELLO',1,2) LENGTH('WORLD') REPLACE('SQL','Q','X') ------------------- --------------- ---------------------- he 5 sXl上例中我們可以看到 substr()的作用是截取字符串,在字符串的後面跟兩個參數,第一個參數表示的是要截取的
起始位置,第二個參數表示的是截取的個數,length()函數返回的是字符串的長度。replace() 字符串後面跟兩
個參數,第一個參數表示要替換的字母,第二個參數表示將第一個字母換為第二個字母。
另外Oracle還支持倒著截取字符串的方式:
?
1 2 3 4 5 6 7 SQL> select ename ,substr(ename ,-3 ) from emp where deptno = 10 ; ENAME SUBSTR(ENAME,-3) ---------- ---------------- CLARK ARK KING ING MILLER LER數值函數:
round():四捨五入函數
trunc():截斷小數位函數
mod() :取余函數
例:
?
1 2 3 4 5 SQL> select round(234.12 , 2) , round(234.324) , round(234.25 , -2) from dual; ROUND(234.12,2) ROUND(234.324) ROUND(234.25,-2) --------------- -------------- ---------------- 234.12 234 200後面的參數 2 表示保留小數點後兩位,如果不寫,默認為零,-2 表示對小數點前面的數進行四捨五入ROUND(234.25,-2) , 4 捨去,3 捨去得到200。
例:
?
1 2 3 4 5 SQL> select trunc(234.12 , 2) , trunc(234.324) , trunc(248.25 , -2) from dual; TRUNC(234.12,2) TRUNC(234.324) TRUNC(248.25,-2) --------------- -------------- ---------------- 234.12 234 200trunc(234.12 , 2)制定保留小數的位數; trunc(234.324)直接捨去小數 , trunc(248.25 , -2),捨去小數點前面的兩位。
小結:trunc() 和 round()函數的區別是trunc(),直接進行相應的操作,不會執行四捨五入。
例:
?
1 2 3 4 5 SQL> select mod(10 , 3) from dual ; MOD(10,3) ---------- 1