一, 基本函數
1. show user; 顯示當前鏈接的用戶
2. select * from tab 獲取當前用戶下得所有表
3. desc message 顯示message表的結構
4. clear scr 清屏
二, 字符串函數
1. select upper('hello') from dual 將hello轉換爲大寫 dual是虛表。
2. select lower("HELLO") from dual 將HELLO轉換爲小寫
3. select initcap('hello') from dual 將第一個字母轉換爲大寫
4. select concat('hello','word')from dual; 字符串的鏈接
5. select substr('helooo',1,3)from dual; 字符串的截取,結果爲hel, select substr('helooo',1,4)from dual; 結果 爲helo 字符串的截取跟java中有所不同。
6. select length('hello') from dual 字符串的長度
7. select replace('hello','o','x') 字符串的替換
8. select substr('hellotster',-4) 表示截取後四位, 結果爲ster.
9. SQL> select substr('helo tt',3)from dual; 表示從第三位開始截取,一直截取到字符串末尾
SUBSTR('HELOTT',3)
------------------
lo tt
三, 數值函數
1. select round(789.536) from dual 四捨五入, 結果爲790
SQL> select round(789.536) from dual;
ROUND(789.536)
--------------
790
2. select round(123456.3434,2)from dual; 保留2位小數 結果爲123456.34
ROUND(123456.3434,2)
--------------------
123456.34
3. select trunc(4545.98) from dual 去掉小數,不進位 結果爲4545
TRUNC(4545.98)
--------------
4545
4. select trunc(45454.4545,3) from dual 保留3爲小數 結果爲45454.454
TRUNC(45454.4545,3)
-------------------
45454.454
5. 當第三個參數爲負數時
SQL> select trunc(45454.4545,-3)from dual;
TRUNC(45454.4545,-3)
--------------------
45000
SQL> select trunc(45454.4545,-2)from dual;
TRUNC(45454.4545,-2)
--------------------
45400
6. 取模 select mod(10,3) from dual 等於 10%3
MOD(10,3)
----------
1
四,日期函數
1. select sysdate from dual 取得當前時間
2. select last_day(sysdate) from dual 求本月的最後一天
五,轉換函數
1. select to_char(sysdate,'yyyy') from dual 結果爲2012
TO_CHAR(SYSDATE,'YYYY')
-----------------------
2012
2. 月份
SQL> select to_char(sysdate,'mm')from dual;
TO_CHAR(SYSDATE,'MM')
---------------------
04
3. 日期
SQL> select to_char(sysdate,'dd')from dual;
TO_CHAR(SYSDATE,'DD')
---------------------
28
4. 當前時間的格式
SQL> select to_char(sysdate,'yyyy/mm/dd')from dual;
TO_CHAR(SYSDATE,'YYYY/MM/DD')
-----------------------------
2012/04/28
5. 取消月日前面的0
SQL> select to_char(sysdate,'fmyyyy-mm-dd')from dual;
TO_CHAR(SYSDATE,'FMYYYY-MM-DD'
------------------------------
2012-4-28
6. 將字符串轉換爲日期
SQL> select to_date('2011-09-09','yyyy-mm-dd')from dual;
TO_DATE('2011-09-09','YYYY-MM-
------------------------------
2011-9-9
7. 格式
SQL> select to_char('20394','99,999')from dual;
TO_CHAR('20394','99,999')
-------------------------
20,394
8.加上錢幣符號
SQL> select to_char('20394','L99,999')from dual;
TO_CHAR('20394','L99,999')
--------------------------
¥20,394
9,SQL> select sign(10-20)from dual; sign()函數根據某個值是0、正數還是負數,分別返回0、1、-1
SIGN(10-20)
-----------
-1
10 。DECODE函數
先構造一個例子,假設我們想給智星職員加工資,其標準是:工資在8000元以下的將加20%;工資在8000元以上的加15%,通常的做法是,先選出記錄中的工資字段值? select salary into var-salary from employee,然後對變量var-salary用if-then-else或choose case之類的流控制語句進行判斷。 如果用DECODE函數,那麼我們就可以把這些流控制語句省略,通過SQL語句就可以直接完成。如下:select decode(sign(salary - 8000),1,salary*1.15,-1,salary*1.2,salary from employee 是不是很簡潔? DECODE的語法:DECODE(value,if1,then1,if2,then2,if3,then3,...,else),表示如果value等於if1時,DECODE函數的結果返回then1,...,如果不等於任何一個if值,則返回else。初看一下,DECODE 只能做等於測試,但剛纔也看到了,我們通過一些函數或計算替代value,是可以使DECODE函數具備大於、小於或等於功能。
SQL> select decode(sign(10-20),-1,10,20)from dual;
DECODE(SIGN(10-20),-1,10,20)
----------------------------
10
SQL> select decode(sign(30-20),-1,10,1,20)from dual;
DECODE(SIGN(30-20),-1,10,1,20)
------------------------------
20
SQL> select decode(sign(20-20),-1,10,1,20,0,0)from dual;
DECODE(SIGN(20-20),-1,10,1,20,
------------------------------
0
SELECT TRUNC(SYSDATE + 1) FROM DUAL,這個就是明天,TRUNC是去掉小時分秒的函數。 連個日期相減,得到相差的天數以及小時分秒換算成了數字。 一個時間點到當前時間是否間隔3天,直接用這個時間點,減去SYSDATE,如果是大於3,那麼相隔就超過了3天,而小於3,不到3天,等於3,正好3天。
Oracle的通配符
% 用來表示任意數量的字符,或者可能更本沒有字符
_ 用來確切的單個字符
? 未知字符
# 表示阿拉伯數字,0到9
[a-d] 表示a-d