1. 程式人生 > >Oracle單行函式

Oracle單行函式

單行函式 資料庫的方便開發,往往會提供支援函式,利用這些函式針對資料進行特定的操作。

Oracle 之中對於函式基本的使用結構如下 返回值 函式名稱(列 | 資料) 根據單號函式的特點可以分為以下幾種: 1.。字串函式, 2.。資料函式 3。日期函式, 4。轉換函式, 5。通用函式。

字串函式

字串函式可以針對字串函式進行處理,Oracle 之中對於此類函式定義有如下幾點。UPPER()、LOWER()、 INITCAP() 、REPLACE() LENGTH() SUBSTR

1.大小寫轉換函式 轉大寫函式:字串UPPER(列 |字串) 轉小寫函式:字串lower(列 |字串) 例項 select lower (‘hello’),upper(‘hello’) from dual #dual 驗證函式虛擬表 例項2 select *from 表 where 列 =upper(‘&inputname’) 執行後用戶輸入字串將會轉換成大寫返回 變數中

2,首字元大寫 語法 :字串 INITCAP (列 | 資料) select initcap (‘helloWord’) from dual 除了首字母其他都變成小寫

3計算字串的長度 語法:數字 LENGTH(列 | 字串資料 ) 例句: select * from 表 where length(列)=5

4.字串替換。 可以使用指定的內容替換原始字串的資料

範例:將所有人的姓名中的A替換為 “” select REPLACE(列,UPPER (‘a’),’’) FROM 表 範例:取消字串所有的空格 select replace('hello word ‘,’ ') from dual;

5、字串擷取操作 語法一 : 字串 SUBSTR (列 | 資料,開始點),從指定的開始點一直擷取到結尾; 語法二:字串 SUBSTR(列 | 資料,開始點,結束點);擷取指定範圍的字串。

範例一:擷取word select substr(‘helloword’,6) from dual; 範例二 擷取後5個字元 select substr(‘helloword’,-4) from dual; #只有oracle 支援負數函式 注意:oracle中字串索引都是從1開始,及時設定為0也自動變成1

數值函式 數值函式就是針對數字進行處理的。有3個主要函式:ROUND() TRUNC() MOD() 1.四捨五入操作: 語法:數字 ROUND(列 | 數字 【,保留小數位】) 例句 select round(178915.62342), #結果 178916 round(178915.62342,-5), #結果200000 round(-15.32342) from dual; #結果15 2.擷取小數,所有小數直接擷取,不會進位

3,求模 (求餘數) 語法:數字 MOD(列 1| 數字1,列2 |數字2) 例句: select mod(10,3)from dual;

日期函式 Oracle 自己的特色 日期函式主要是進行日期處理的,比較關鍵的問題怎麼獲取當前時間,Oracle中專門提供一個數據偽列,它是一個列,但是這個列不存在與表中,可是像列一樣卻可以進行查詢,這個偽列就是SYSDATE 提取現在日期 SELETC SYSDATE FROM DUAL SELETC SYSDATE ,SYSTIMESTAMP FROM DUAL 實際上對於日期提供有一下三種計算方式; 1.日期+數字=日期 若干天后的日期 2.日期-數字=日期 若干天前的日期 3.日期-日期=數字 這個兩個日期相差多少天

範例一 select sysdate+10,sysdate+9999 from dual;#最大支援9999

1.計算兩個日期所經歷的月數總和 語法:數字 MONTHS_BETWEEN(日期1,日期2) 範例二 日期減去日期 SELECT 列 TRUNC(MONTHS_BETWEEN(SYSDATE,含有列時間)/12)years FROM 表 #提取含有時間的列 現在時間減去列時間得到月除以12 得到年,得出年後用TRUNC函式取整數 再使用years別名 FROM 表

2.增加若干月之後的日期 語法:日期 ADD_MONTHS(日期,月數) 範例 select add_months(sysdate,4),add_months(sysdate,20), add_months(sysdate,9999)from dual;

3.計算指定日期所在的月最後一天; 語法:日期 LAST_DAY (日期) 範f例 查詢一個人所在入職的日期為當時月的第二天 SELECT LAST_DAY(入職時間列),LAST_DAY(入職時間列)-2 from 表 where LAST_DAY(入職時間列)-2=入職時間列

4.計算下一個指定的星期 語法:日期 NEXT_DAY(日期,一週時間數) 範例 select next_day(sysdate,‘星期日’) from dual;

轉換函式

就是將字串和日期、數字的轉換,轉換函式移動分為三種 TO_CHAR()、TO_DATE()、TO_NOMBER()

1.轉換字串函式,數字或者是日期可以轉換為字串。 語法格式:字串_TO_CHAR(列 | 日期 |數字,轉換格式)。 對於轉換格式有兩種格式: 日期轉換為字元:年(yyyy),月(mm),日(dd) 時(hh,hh24),分(mi), 秒(ss)

  1. 數字轉換為字串:任意的一位數字用(9),貨幣(L,本地貨幣) 例句一:格式化日期 select to_char(sysdate,'yyyy-mm-dd ') ,to_char(sysdate,‘yyyy-mm-dd hh24:mi:ss’)from dual;

範例二: 提取時間的某一個值轉換成字串 select to_char(sysdate,'mm ') ,to_char(sysdate,‘yyyy hh24:mi:ss’)from dual;

範例三:轉換數字額格式,並加上本地貨幣, select to_char(56777654543454,‘L999,999,999,999,999,999’) from dual;

2.字串轉日期函式: 字元按照日月年的方式編寫,可以自動轉換日期型別,使用TO_DATE()函式 語法:TO_DATE(字串,轉換格式); 年(yyyy),月(mm),日(dd)時(hh,hh24),分(mi), 秒(ss) 例句: select to_date(‘1987-07-21’,‘yyyy-mm-dd’) from dual;

通用函式(Oracle自己的特色) 在Oracle裡面提供兩個簡單的資料處理函式:NVL() ,DECODE() 1.NVL 處理null: 語法:NVL(列 | 預設值)

2,decode()多數值判斷 語法:decode (列,匹配內容1,顯示內容1,匹配內容2,顯示內容2。。。。。【預設值】) #沒有匹配的內容顯示匹配值