ORACLE函式介紹第八篇 綜述

junsansi發表於2007-08-30

  通過前面章節的練習我們可以對三類函式特徵做些描述。
單值函式多數處理單個或多個值但只返回單個值(SYS_CONNECT_BY_PATH除外)。
聚合函式多數處理多行並且各分組序列分別返回成一行。
分析函式多數處理多行並且每條記錄均會有返回。

  需要注意不同型別函式可被應用的範圍。
單值函式可應用範圍最為廣泛,select語句中的每一處都可被嵌入。
聚合函式通常會配合group by被應用於select或having子句,
分析函式只能應用於select或order by子句。


  雖然我們前面介紹了百十多個函式,可是仍然並非全部,並且即使是我們介紹到的,也不能說所有函式都已經介紹了其全部的特色,比如:對於substr,length,instr(like)等均有擴充套件形式。比如
substr:以字元為單位
substrb:以位元組為單位
substrc:以unicode完全字元為單位
substr2:以UCS2程式碼點為單位
substr4:以UCS4程式碼點為單位

  它們對於字元的處理方式都是一致的,只不過在我們看來相同的字元在它們看來可能就不同,這就是不同編碼的原因。關於unicode,ucs程式碼概念介紹可以看看這裡:http://www.vscodes.com/article/5/104/2227.html


  Oracle中函式功能強大,分類細緻,某些地方構思異常巧妙。

引數中的小數點
我們以CEIL為例
SELECT CEIL(12.8) FROM DUAL;
值是什麼?

負數也有學問
我們先以LPAD函式為例。一個非常簡單的補值單值函式。
SELECT LPAD('Let us go!',5,'-') FROM DUAL;
猜猜這個會返回什麼值呢?

SELECT LPAD('Let us go!',20,'-') FROM DUAL;
猜猜這個又會返回什麼值呢?

SELECT LPAD('Let us go!',-5,'-') FROM DUAL;
再猜猜這個會返回什麼值呢?

再以SUBSTR為例:
SELECT SUBSTR('Let us go!',-5,5) FROM DUAL;
這個將要返回什麼值呢?

SELECT SUBSTR('Let us go!',-5,-5) FROM DUAL;
這個又將會返回什麼值呢?


小心隱藏參
我們仍然以LPAD為例:
SELECT LPAD('Let us go!',20) FROM DUAL;
猜猜這個返回什麼值呢?

SELECT SUBSTR('Let us go!',-5) FROM DUAL;
這個將要返回什麼值呢?

SELECT TRUNC(12.8251) FROM DUAL;
這個又將會返回什麼值呢?

  諸如此類在oracle的函式中是比比旨是,比如:substr,instr,trim等等~~~~箇中奧妙還需個自體會。

Oracle中還提供了一批函式用來操縱xml資料,比如:XMLAGG,XMLCOLATTVAL,XMLCONCAT,XMLFOREST,XMLSEQUENCE,XMLTRANSFORM,EXTRACT(XML),UPDATEXML等,功能強悍,不過演示環境搭建稍嫌複雜,三言二語也說不清楚,我這裡就不多做介紹了。感興趣的話可以檢視oracle官方文件或者直接跟我交流。

如果以上種種仍然不能滿足你的需求,你還可以通過自己建立function的方式來實現,建立的語法格式非常簡單,不屬於本章內容就不多做介紹了,如果你想找個示例的話,俺之前寫過一個oracle下的郵件傳送有相關示例可供你參考,地址如下:http://www.itpub.net/825426.html

  最後補充一句再強大的功能,還是需要能夠靈活使用才能夠體現其價值,所以瞭解並不是我們的目地,熟練應用才是我們的目標:)。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7607759/viewspace-22285/,如需轉載,請註明出處,否則將追究法律責任。

相關文章