oracle 基本函數

  


 一, 基本函數

      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




發佈了41 篇原創文章 · 獲贊 4 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章