Oracle 內建函式一

tangyunoracle發表於2010-11-16

Ø ABS

ABS函式返回一數值的絕對值。

Ø ACOS

ACOS函式返回一數值的反餘弦值。結果以弧度表示,且在0PI之間。

其語法格式如下:

ACOS(number)

其中,number必須是-11之間的值,如果超出則報異常

下面的例子顯示了1-1 的反餘弦值:

ACOS(1)=0

ACOS(-1)=3.1415927(PI)

Ø ADD_MONTHS

如果,結果月份的天數比開始月份的天數少,那麼,也會向回撥整以適應有效日期。

SQL> SELECT SYSDATE,ADD_MONTHS(SYSDATE,2),ADD_MONTHS(SYSDATE,4) FROM DUAL;

SYSDATE ADD_MONTHS(SYSDATE,2) ADD_MONTHS(SYSDATE,4)

----------- --------------------- ---------------------

2010-10-31 2010-12-31 19:06:59 2011-2-28 19:06:59

Ø ASCII

SQL> SELECT ASCII('T'),ASCII('TANGYUN') FROM DUAL;

ASCII('T') ASCII('TANGYUN')

---------- ----------------

84 84

如果指定了一個多字串,該函式將忽略除首字母外的所有字元。

Ø ASCIISTR

用於任意字符集的字串轉換為資料庫字符集的ASCII字串。

SQL> SELECT ASCIISTR('湯雲'),ASCIISTR('TANGYUN'),ASCII('TANGYUN'),ASCII('T') FROM DUAL;

ASCIISTR('湯雲') ASCIISTR('TANGYUN') ASCII('TANGYUN') ASCII('T')

---------------- ------------------- ---------------- ----------

6C644E91 TANGYUN 84 84

Ø ASIN

ASIN函式返回一數值的反正弦值。結果以弧度表示,且在-PI/2PI/2之間。

其語法格式如下:

ASIN(number)

其中:number必須是-11之間的值,如果超出則報異常

下面的例子顯示了1-1的反正弦值:

ASIN(1)= 1.57079632

ASIN(-1)=-1.57079632

Ø ATAN

ATAN函式返回一數值的反正切值。結果以弧度表示,且在-PI/2PI/2之間。

其語法格式如下:

ATAN(number)

其中:number必須是-11之間的值,如果超出則報異常

下面的例子顯示了1-1 的反正切值:

ATAN(1)= 0.78539816

ATAN(-1)=- 0.78539816

Ø ATAN2

ATAN2函式返回兩個數值的反正切值。結果以弧度表示。

其語法格式如下:

ATAN2first,second)

其中:

first 第一個數

second 第二個數

下面的例子顯示了1-1的反正切值:

ATAN2(1,.5)= 1.107148717

Ø BIN_TO_NUM

BIN_TO_NUM(EXPR1,EXPR2,EXPR3,….)用於將位向量值轉換為實際的數值。EXPRn其實就是0或者1,有幾個表示式就是第一位就是2的多少次冪。

SQL> SELECT BIN_TO_NUM(0,0,0,0,1) FROM DUAL;

BIN_TO_NUM(0,0,0,0,1)

---------------------

1

SQL> SELECT BIN_TO_NUM(0,0,0,1,1) FROM DUAL;

BIN_TO_NUM(0,0,0,1,1)

---------------------

3

SQL> SELECT BIN_TO_NUM(0,0,1,1,1) FROM DUAL;

BIN_TO_NUM(0,0,1,1,1)

---------------------

7

SQL> SELECT BIN_TO_NUM(0,1,1,1,1) FROM DUAL;

BIN_TO_NUM(0,1,1,1,1)

---------------------

15

SQL> SELECT BIN_TO_NUM(1,1,1,1,1) FROM DUAL;

BIN_TO_NUM(1,1,1,1,1)

---------------------

31

SQL> SELECT BIN_TO_NUM(1,1,1,1,1,1) FROM DUAL;

BIN_TO_NUM(1,1,1,1,1,1)

-----------------------

63

Ø BFILENAME

BFILENAME函式返回一指向磁碟的物理檔案的BFILE地址。

其語法格式如下:

BFILENAME(directory,filename)

其中:directory 一個包括指定檔案的目錄路徑字串。該目錄透過命令CREATE DIRECTORY產生。但它不是一個作業系統目錄filename指定目錄中使用者試圖指定的檔名字。該檔案可以是預先不存在的檔案

下面的例子解釋了BFILENAME函式的使用情況:

BFILENAME(‘gif_dir’,’book_photo.gif’)

Ø CAST

CAST(EXPR AS TYPE)該函式用於將一個內建資料型別或者集合型別轉換成另外一個內建資料型別或者集合型別。

SQL> SELECT CAST('12.12' AS INTEGER) FROM DUAL;

CAST('12.12'ASINTEGER)

---------------------------------------

12

SQL> SELECT CAST(12.12 AS NUMBER(10,0)) FROM DUAL;

CAST(12.12ASNUMBER(10,0))

-------------------------

12

Ø CEIL

返回結果是大於等於輸入引數的最小整數。

SQL> SELECT CEIL(-5.999999999) FROM DUAL;

CEIL(-5.999999999)

------------------

-5

Ø CHARTOROWID

CHARTOROWID函式將一個字串轉換成rowid型別。

其語法格式如下:

CHARTOROWID(string)

其中:string 待處理的字串。該字串應該能表示一個有效的rowid型資料

下面的例子解釋了CHARTOROWID函式的使用情況:

SQL> SELECT ROWID FROM DUAL;

ROWID

------------------

AAAAECAABAAAAgiAAA

SQL> SELECT CHARTOROWID('AAAAECAABAAAAgiAAA') "ROWID" FROM DUAL;

ROWID

------------------

AAAAECAABAAAAgiAAA

Ø CHR

CHR函式就相應的資料庫字符集,返回一個指定數值相應的字元。例如,給定一個ASCII值,使用CHR函式返回該數值表示的字元。

SQL> SELECT CHR(10),CHR(65) FROM DUAL;

CHR(10) CHR(65)

------- -------

A

這裡的CHR(10) 是一個Tab鍵。

Ø COALESCE

返回引數中的第一個非空表示式。如果所有的參數列達式都是空值,最終將返回一個空值。

SQL> SELECT COALESCE(NULL,NULL,NULL,3) FROM DUAL;

COALESCE(NULL,NULL,NULL,3)

--------------------------

3

SQL> SELECT NVL(NULL,'a') FROM DUAL;

NVL(NULL,'A')

-------------

A

Ø COMPOSE

COMPOSE(string)用於將輸入字串轉換為UNICODE字串值。

SQL> SELECT COMPOSE(UNISTR('308')) FROM DUAL;

COMPOSE(UNISTR('308'))

------------------------

̈

SQL> SELECT COMPOSE('湯雲'||UNISTR('308')) FROM DUAL;

COMPOSE('湯雲'||UNISTR('308'

------------------------------

湯雲̈

SQL> SELECT COMPOSE('湯雲'||UNISTR('191')) FROM DUAL;

COMPOSE('湯雲'||UNISTR('191'

------------------------------

湯雲Ƒ

SQL> SELECT UNISTR('191') FROM DUAL;

UNISTR('191')

---------------

Ƒ

Ø CONCAT

CONCAT函式將兩個輸入字串,組合成一個,並返回結果。與“||”完全相同。

SQL> SELECT CONCAT('TANG','YUN') FROM DUAL;

CONCAT('TANG','YUN')

--------------------

TANGYUN

Ø CONVERT

CONVERT函式把一字串從一個字符集轉換到另一字符集。

Ø COS

COS函式返回一角度的餘弦值。結果為弧度值。

其語法格式如下:

COS(angle)

其中:angle 角度值,用弧度表示

下面的例子解釋了COS函式的使用情況:

SQL> SELECT ROUND(COS(90*3.14/180),6) FROM DUAL;

ROUND(COS(90*3.14/180),6)

-------------------------

0.000796

SQL> SELECT COS(0) FROM DUAL;

COS(0)

----------

1

Ø COSH

COSH函式返回一角度的雙曲餘弦值。

其語法格式如下:

COSH(angle)

其中:

angle 角度值,以弧度表示

下面的例子解釋了COSH函式的使用情況:

COSH(0)=1

COSH(90*3.14/180)=2.507

將角度值轉化成弧度值,可以參考COS函式的有關部門資訊

Ø CURRENT_DATE

該函式是Oracle9i新增的函式,用於返回當前會話時區所對應的日期時間。

Ø CURRENT_TIMESTAMP

該函式是Oracle9i新增的函式,用於返回當前會話時區所對應的日期時間。

Ø DBTIMESONE

該函式是Oracle9i新增的函式,用於返回資料庫所在的時區。

Ø DECODE

SQL> SELECT DECODE(DUMMY,'Y','YES','N','NO','NONE') "DUMMY1",DECODE(DUMMY,'Y','YES','X','NO','NONE') "DUMMY2" FROM DUAL;

DUMMY1 DUMMY2

------ ------

NONE NO

SQL>SELECT TO_CHAR(TRUNC(BIRTH_DATE,’YEAR’),’YYYY’),

2 COUNT(*)

3 FROM AQUATIC_ANIMAL

4 WHERE TO_CHAR(TRUNC(BIRTH_DATE,’YEAR’),’YYYY’)

5 IN(‘1995’,’1996’,’1997’)

6 GROUP BY TO_CHAR(TRUNC(BIRTH_DATE,’YEAR’),’YYYY’);

TO_C COUNT(*)

--- -------

1995 1

1996 3

1997 1

SQL>SELECT SUM(

DECODE(TO_CHAR(TRUNC(BIRTH_DATE,’YEAR’),’YYYY’),’1995’,1,0))BORN_1995

SUM(DECODE(TO_CHAR(TRUNC(BIRTH_DATE,’YEAR’),’YYYY’),’1996’,1,0))BORN_1996 SUM(DECODE(TO_CHAR(TRUNC(BIRTH_DATE,’YEAR’),’YYYY’),’1997’,1,0))BORN_1997

FROM AQUATIC_ANIMAL

WHERE TO_CHAR(TRUNC(BIRTH_DATE,’YEAR’),’YYYY’)

IN(‘1995’,’1996’,’1997’)

BORN_1995 BORN_1996 BORN_1997

----- ----- -----

1 3 1

Ø DECOPME

用於分解字串並返回相應的UNICODE字串,與COMPOSE對應。

Ø DEPTH(n)

用於返回XML解決方案中的UNDER_PATH路徑對應的層數。n用於指定相對的層數。

DUMP(EXPR,RETURN_FMT)

用於返回表示式的資料型別程式碼、長度以及內部表示格式。Return_fmt用於指定返回格式(8:八進位制符號,10:十進位制符號,16:十六進位制符號,17:單個字元),只能在SQL語句中使用。

SQL> SELECT DUMP('TANGYUN',1016) FROM DUAL;

DUMP('TANGYUN',1016)

--------------------------------------------------------

Typ=96 Len=7 CharacterSet=ZHS16GBK: 54,41,4e,47,59,55,4e

SQL> SELECT DUMP('TANGYUN',1017) FROM DUAL;

DUMP('TANGYUN',1017)

-------------------------------------------------

Typ=96 Len=7 CharacterSet=ZHS16GBK: T,A,N,G,Y,U,N

SQL> SELECT DUMP('TANGYUN',0817) FROM DUAL;

DUMP('TANGYUN',0817)

---------------------------

Typ=96 Len=7: T,A,N,G,Y,U,N

Ø EMPTY_BLOB/ EMPTY_CLOB

EMPTY_BLOB函式返回一空的BLOB指標,該指標可以用在INSERTUPDATE命令中,以初始化BLOB列項。

其具體的語法格式如下:

EMPTY_BLOB()

該函式沒有引數。下面的例子說明了如何使用該函式初始化BLOB列,並作為一個新行插入到表中。

INSERT INTO some_table

(blob_column)

VALUE(EMPTY_BLOB());

Ø EXP

EXP函式返回e的一個冪。

SQL> SELECT EXP(2),EXP(3) FROM DUAL;

EXP(2) EXP(3)

---------- ----------

7.38905609 20.0855369

Ø EXTRACT

該函式是Oracle9i新增的函式,用於從日期中取得所需的特定資料(如:年、月、日等)。

SQL> SELECT EXTRACT(DAY FROM SYSDATE),EXTRACT(YEAR FROM SYSDATE) FROM DUAL;

EXTRACT(DAYFROMSYSDATE) EXTRACT(YEARFROMSYSDATE)

----------------------- ------------------------

16 2010

Ø EXTRACT(XMLTYPE_INSTANCE,XPATH_STRING)

返回XML節點下的相應內容。

Ø EXTRACTVALUE(XMLTYPE_INSTANCE,XPATH_STRING)

返回XML節點路徑下的值。

Ø FLOOR

FLOOR函式返回一個小於或等於給定十進位制數的最大整數。

SQL> SELECT FLOOR(-5.99999999),FLOOR(-5.0000001) FROM DUAL;

FLOOR(-5.99999999) FLOOR(-5.0000001)

------------------ -----------------

-6 -6

Ø GREATEST

GREATEST函式返回一數值列表中的最高數值。可使用GREATEST函式處理數字資料和字元資料。

這裡需要注意的是以第一個引數來判斷引數是字元型還是數值型。

SQL> SELECT GREATEST('12',102,-12,0,'-15') FROM DUAL;

GREATEST('12',102,-12,0,'-15')

------------------------------

12

SQL> SELECT GREATEST(12,'102',-12,0,'-15') FROM DUAL;

GREATEST(12,'102',-12,0,'-15')

------------------------------

102

Ø HEXTORAW

函式HEXTORAW將一個由十六進位制字元組成的字串轉換成一個raw數值。

其具體的語法格式如下:

HEXTORAWstring

其中:

string 十六進位制字元組成的字串資料

SQL>CREATE TABLE xx (y raw(10));

Table created.

SQL>INSERT INTO xx VALUES(HEXTORAW(‘414243’));

1 row created.

AQL>SELECT DUMP(y) FROM xx;

DUMP(Y)

------------------------

Typ=23 Len=3:65,66,67

注意:在呼叫函式時,raw項中的數值是精確表示的(十進位制數65=十六進位制數41

Ø INITCAP

INITCAP函式接收一字串,並轉換該字串中的所有單詞,以使各單詞均以大寫字母開頭。

SQL> SELECT INITCAP('This is a teST') FROM DUAL;

INITCAP('THISISATEST')

----------------------

This Is A Test

Ø INSTR/INSTRB

INSTR(string,substring[,start[,occurrence]])

INSTR函式返回字元或者字串的位置,找不到則返回0occurrence引數指定第幾

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

相關文章