Oracle

轉載地址http://www.cnblogs.com/bbliutao/archive/2017/11/08/7804263.html

F.1字符函數——返回字符值

 

(chr,concat,initcap,lower,lpad/rpad,nls_initcap,nls_lower,nls_upper,regexp_replace,regexp_substr,replace,trim/ltrim/rtrim,soundex,substr,translate,upper)

 

說明:可以sql和plsql中使用

CHR

語法:  chr(x)

功能:給出整數X,返回對應的ASCII碼字符。CHR和ASCII是一對反函數。

SQL> select chr(54740) 別名1,chr(65) 別名2 from dual;

 

別名1  別名2

趙       A

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

 

CONCAT

語法: CONCAT(string1,string2)

功能:連接兩個字符串

SQL> select concat('010-','88888888')||'23'  連接 from dual;

 

連接

010-8888888823

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

 

INITCAP

語法:INITCAP(string)

功能:返回字符單詞首字母大寫,其餘小寫,單詞用空格和非字母字符分隔。

SQL> select initcap('smith hEllo') upp from dual;

 

UPP

Smith Hello

 

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

 

LOWER

    語法:LOWER(string)

     功能:所以字母小寫

     SQL> select lower('AaBbCcDd') AaBbCcDd from dual;

 

     AaBbCcDd

     aabbccdd

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

 

LPAD/RPAD

語法:LPAD/RPAD(string1,x[,string2])

功能:在string1字符左邊或右邊粘貼數個string2字符,直到字符總字節數達到x字節。string2默認爲空格。

如果string2的長度要比X字符少,就按照需要進行復制。如果string2多於X字符,則僅string2前面的X各字符被使用。如果string1長度大於x,則返回string1左端x個字符。

 

RPAD  在列的右邊粘貼字符

LPAD  在列的左邊粘貼字符

SQL> select lpad(rpad('gao',10,'*'),17,'*')from dual;

 

LPAD(RPAD('GAO',1

*******gao*******

不夠字符則用*來填滿

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

 

NLS_INITCAP

語法:NLS_INITCAP(string[,nlsparams])

功能:返回字符串每個單詞第一個字母大寫而單詞中的其他字母小寫的string,nlsparams

指定了不同於該會話缺省值的不同排序序列。如果不指定參數,則功能和INITCAP相同。Nlsparams可以使用的形式是:‘NLS_SORT=sort’ 這裏sort制訂了一個語言排序序列。

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

 

NLS_LOWER

語法:NLS_LOWER(string[,nlsparams])

功能:返回字符串中的所有字母都是小寫形式的string。不是字母的字符不變。

Nlsparams參數的形式與用途和NLS_INITCAP中的nlsparams參數是相同的。如果nlsparams沒有被包含,那麼NLS_LOWER所作的處理和LOWER相同。

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

 

NLS_UPPER

語法:NLS_UPPER(string[,nlsparams])

功能:返回字符串中的所有字母都是大寫的形式的string。不是字母的字符不變。nlsparams參數的形式與用途和NLS_INITCAP中的相同。如果沒有設定參數,則NLS_UPPER功能和UPPER相同。

使用位置:過程性語句和SQL語句。

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

 

REGEXP_REPLACE

語法:REGEXP_REPLACE(str1,pattem[,str2[,pos[,occ[,par]]]])

功能:10g新增函數,擴展了REPLACE函數的功能,並且用於按照特定正則表達式的規則替換字符串。其中參數str1指定源字符表達式,pattem指定正則表達式,str2指定替換字符串,pos指定起始搜索位置,occ指定替換出現的第幾個字符串,par指定默認匹配操作的文本串。

 

select REGEXP_REPLACE(a,’(.)’,’\1’) a from count;

A r g e n t i n a

 

體會NVL爲DECODE,只支持NVL()內不再有其它括號()

select a,

       instr(upper(a), 'NVL(', 1) a3,

       instr(upper(a), ')',instr(upper(a), 'NVL(', 1),1) a4,

       substr(a,instr(upper(a), 'NVL(', 1),instr(upper(a), ')',instr(upper(a), 'NVL(', 1),1)-instr(upper(a), 'NVL(', 1)+1) a41,

       substr(a,instr(upper(a), 'NVL(', 1)+4,instr(upper(a), ')',instr(upper(a), 'NVL(', 1), 1)-instr(upper(a), 'NVL(', 1)-4) a5,

       REGEXP_REPLACE(

       substr(a,instr(upper(a), 'NVL(', 1)+4,instr(upper(a), ')',instr(upper(a), 'NVL(', 1), 1)-instr(upper(a), 'NVL(', 1)-4),

       '(.*),(.*)','\2,\1'

       ) a6,

       REGEXP_REPLACE(

       substr(a,instr(upper(a), 'NVL(', 1)+4,instr(upper(a), ')',instr(upper(a), 'NVL(', 1), 1)-instr(upper(a), 'NVL(', 1)-4),

       '(.*),(.*)','decode(\1,null,\2,'''',\2,\1)'

       ) a7,

       substr(a,1,instr(upper(a), 'NVL(', 1)-1)||REGEXP_REPLACE(

       substr(a,instr(upper(a), 'NVL(', 1)+4,instr(upper(a), ')',instr(upper(a), 'NVL(', 1), 1)-instr(upper(a), 'NVL(', 1)-4),

       '(.*),(.*)','decode(\1,null,\2,'''',\2,\1)'

       )||substr(a,instr(upper(a), ')',instr(upper(a), 'NVL(', 1), 1)+1) a8

  from temp_liut a;

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

 

判斷是否是數字

regexp_replace(a, '\d+', '') is null

 

REGEXP_SUBSTR

語法:REGEXP_SUBSTR(str1,pattem [,pos[,occ[,par]]])

功能:10g新增函數,擴展了SUBSTR函數的功能,並且用於按照特定表達式的規則返回字符串的子串。其中參數str1指定源字符表達式,pattem指定規則表達式, pos指定起始搜索位置,occ指定替換出現的第幾個字符串,par指定默認匹配操作的文本串。

 

Select REGEXP_SUBSTR(‘http://www.oracle.com/products’,’http://([[:alnum:]]+\.?)’) a from dual;

 

a

http://www.oracle.com/

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

 

REPLACE

語法:REPLACE(string,search_str[,replace_str])

功能:把string中的所有的子字符串search_str用可選的replace_str替換,如果沒有指定replace_str,所有的string中的子字符串search_str都將被刪除。REPLACE是TRANSLATE所提供的功能的一個子集。

 

REPLACE('string','s1','s2')

string   希望被替換的字符或變量

s1       被替換的字符串

s2       要替換的字符串

SQL> select replace('he lohe you','he','i') from dual;

 

replace('he lohe you','he','i')

i loi you

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

 

TRIM/LTRIM/RTRIM

語法1:LTRIM/RTRIM(string1,[string2])

語法2:trim([string2] from string1)

語法1功能:中刪除從左/右邊算起出現在string1中的字符string2,string2如果是多個字符則逐個單字符比對刪除,tring2被缺省設置爲單個的空格。當遇到不在string2中的第一個字符,結果就被返回了;

語法2功能:刪除左右兩邊出現在string1中的字符string2,tring2必須爲單字符,否則報錯。

 

select ltrim(rtrim('   gao qian jing   ',' '),' ') from dual;

gao qian jing

 

select ltrim('abaaaabbbcda','ab') from dual;

cda

 

select trim('a' from 'abacda') from dual;

bacd

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

 

SOUNDEX

語法:  SOUNDEX(string)

功能:  返回string的聲音表示形式.這對於比較兩個拼寫不同但是發音類似的單詞而言很有幫助,如果字符發音相同,則返回的結果會一致.

 

SOUNDEX 返回一個與給定的字符串讀音相同的字符串

SQL> create table table1(xm varchar(8));

SQL> insert into table1 values('weather');

SQL> insert into table1 values('wether');

SQL> insert into table1 values('gao');

 

SQL> select xm from table1 where soundex(xm)=soundex('weather');

 

XM

weather

wether

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

 

SUBSTR

語法:  SUBSTR(string,a[,b])

功能:截取字符串,從第a個開始取b個字符,這個務必要注意,是字符。 vachar2最長4000個字節,GBK編碼中一箇中文字符佔2個字節,韓文字符佔4個字節,如果string是date或者number的數據類型,會自動轉化爲varchar2。

 

SQL> select substr('13088888888',3,8) 截取字符串 from dual;

截取字符串

08888888

 

select SUBSTR(t.a,4),a from temp_liut t;

JAN-00  04-jan-00

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

 

TRANSLATE

語法:  TRANSLATE(string,from_str,to_str)

功能:  將字符string按照from_str與to_str的對應規則進行處理,返回將所出現的from_str中的每個字符替換爲to_str中的相應字符以後的string. TRANSLATE是REPLACE所提供的功能的一個超集.如果from_str比to_str長,那麼在from_str中而不在to_str中而外的字符將從string中被刪除,因爲它們沒有相應的替換字符. to_str不能爲空.Oracle把空字符串認爲是NULL,並且如果TRANSLATE中的任何參數爲NULL,那麼結果也是NULL.

 

Select TRANSLATE('2abc2234','01234abcde','99999XXXXX') tra from dual

9XXX9999

 

select replace(TRANSLATE('as中國fd1234','1234567890','0000000000'),'0') from dual;

 

查找字符串',01234,2342,2,'中逗號出現次數

select length(translate(',01234,2342,2,', 'a0123456789', ' ')) from dual;

 

判斷字符串是否是數字

replace(translate(a, '0123456789', '0'),'0') is null

regexp_replace(a, '\d+', '') is null

 

UPPER

語法: UPPER(string)

功能: 所有字母大寫.(不是字母的字符不變.如果string是CHAR數據類型的,那麼結果也是CHAR類型的.如果string是VARCHAR2類型的,那麼結果也是VARCHAR2類型的).

 SQL> select upper('AaBbCcDd') upper from dual;

 

UPPER

AABBCCDD

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

 

 

F.2    字符函數——返回數字

 

(ascii,instr,instrb,length,lengthb,nls_sort)

 

說明:可以sql和plsql中使用

 

 

ASCII

語法:  ASCII(string)

功能: 返回string字符串首字符的十進制表示ascii碼值。 CHR和ASCII是互爲相反的函數.CHR得到給定字符編碼的響應字符. ASCII得到給定字符的字符編碼.

 

SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual;

 

A         A      ZERO     SPACE

65        97        48        32

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

 

INSTR

語法:  INSTR(str1, str2[,a,b])

功能:  得到在str1中包含str2的位置. a>0,str1時從左邊開始檢查的,開始的位置爲a;a<0,那麼str1是從右邊開始進行掃描的,開始的位置爲a。第b次出現的位置將被返回. a和b都缺省設置爲1,這將會返回在string1中第一次出現string2的位置.如果string2在a和b的規定下沒有找到,那麼返回0.位置的計算是相對於string1的開始位置的,不管a和b的取值是多少.

 

INSTR(C1,C2,I,J) 在一個字符串中搜索指定的字符,返回發現指定的字符的位置;

C1    被搜索的字符串

C2    希望搜索的字符串

I     搜索的開始位置,默認爲1(如果爲負數會從後向前搜索)

J     出現的位置,默認爲1

SQL> select instr('oracle traning','ra',1,2) instring from dual;

 

INSTRING

9

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

 

INSTRB

語法:  INSTRB(string1, string2[a,[b]])

功能:  和INSTR相同,只是操作的對參數字符使用的位置的是字節.

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

 

LENGTH

語法:  LENGTH(string)

功能:  返回字符串的長度,特別注意的,對於空的字段,返回爲空,而不是0。

 

SELECT   LENGTH (' 130 ') 返回字符串長度  FROM DUAL;

 

返回字符串長度

5

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

 

LENGTHB

語法:  LENGTHB(string)

功能:  返回以字節爲單位的string的長度.對於單字節字符集LENGTHB和LENGTH是一樣的.

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

 

NLS_SORT

語法: NLS_SORT(string[,nlsparams])

功能: 得到用於排序string的字符串字節.所有的數值都被轉換爲字節字符串,這樣在不同數據庫之間就保持了一致性. Nlsparams的作用和NLS_INITCAP中的相同.如果忽略參數,會話使用缺省排序.

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

 

 

F.3    數學函數

 

(abs,acos,asin,atan,atan2,ceil,cos,cosh,exp,floor,ln,log,mod,power,round,sign,sin,sinh,sqrt,tan,tanh,trunc)

 

說明:數學函數的輸入和輸出都是數字型,並且多數函數精確到38位。函數cos\cosh\exp\ln\log\sin\sinh\sqrt\tan\tanh精確到36位,acos\asin\atan\atan2精確到30爲。數學函數可以在sql語句和plsql塊中引用。

 

 

ABS

語法:   ABS(x)

功能:   得到x的絕對值.

 

SQL> select abs(100),abs(-100) from dual;

 

ABS(100) ABS(-100)

100       100

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

 

ACOS

語法:  ACOS(x)

功能:  返回x的反餘弦值. 輸入x應該從-1到1之間的數,結果在0到pi之間,輸出以弧度爲單位.

 

SQL> select acos(-1) from dual;

 

ACOS(-1)

3.1415927

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

 

ASIN

語法:  ASIN(x)

功能:  返回x的反正弦值. X的範圍應該是-1到1之間,返回的結果在-pi/2到pi/2之間,以弧度爲單位.

 

SQL> select asin(0.5) from dual;

 

ASIN(0.5)

.52359878

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

 

ATAN

語法:  ATAN(x)

功能:  計算x的反正切值.返回值在-pi/2到pi/2之間,單位是弧度.

 

SQL> select atan(1) from dual;

 

ATAN(1)

.78539816

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

 

ATAN2

語法:  ATAN2(x,y)

功能: 返回x除以y的反正切值.結果在負的pi/2到正的pi/2之間,單位是弧度.

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

 

CEIL

語法:  CEIL(x)

功能:  計算大於或等於x的最小整數值.

 

SQL> select ceil(3.1415927) from dual;

 

CEIL(3.1415927)

      4

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

 

COS

語法:  COS(x)

功能:  返回x的餘弦值. x的單位是弧度.

 

SQL> select cos(-3.1415927) from dual;

 

COS(-3.1415927)

     -1

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

 

COSH

語法:  COSH(x)

功能:  計算x的雙曲餘弦值.

 

SQL> select cosh(20) from dual;

 

COSH(20)

242582598

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

 

EXP

語法:  EXP(x)

功能:  計算e的x次冪. e爲自然對數,約等於2.71828.

 

SQL> select exp(2),exp(1) from dual;

 

EXP(2)    EXP(1)

7.3890561 2.7182818

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

 

FLOOR

語法:  FLOOR(x)

功能:  返回小於等於x的最大整數值.

 

SQL> SELECT   FLOOR (2345.67), FLOOR (-2345.67) FROM dual;

 

FLOOR(2345.67)   FLOOR (-2345.67)

  2345                        -2346

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

 

LN

語法:  LN(x)

功能:  返回x的自然對數. x必須是正數,並且大於0

 

SQL> select ln(1),ln(2),ln(2.7182818) from dual;

 

LN(1)     LN(2) LN(2.7182818)

0 .69314718     .99999999

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

 

LOG

語法:  LOG(x,y)

功能:  計算以x爲底的y的對數.底必須大於0而且不等於1, y爲任意正數.

 

SQL> select log(2,1),log(2,4) from dual;

 

LOG(2,1)  LOG(2,4)

0         2

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

 

MOD

語法:  MOD(x,y)

功能:  返回x除以y的餘數.如果y是0,則返回x

 

SQL> select mod(10,3),mod(3,3),mod(2,3) from dual;

 

MOD(10,3)  MOD(3,3)  MOD(2,3)

1         0         2

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

 

POWER

語法:  POWER(x,y)

功能:  計算x的y次冪.

 

POWER 返回n1的n2次方根

SQL> select power(2,10),power(3,3) from dual;

 

POWER(2,10) POWER(3,3)

1024         27

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

 

ROUND

語法:  ROUND(x[,y])

功能:  四捨五入函數,y缺省值爲0,x保留整數;y>0,x保留小數點右邊y位;y<0,x保留小數點左邊 |y| 位;可以對時間進行round,效果是隻保留年月日。

 

SELECT   ROUND (55.655, 2),   --55.66

         ROUND (55.654, 2),   --55.65

         ROUND (45.654, -1),  --50

         ROUND (45.654, -2),  --0

         ROUND (55.654, -2)   --100

  FROM   DUAL;

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

 

SIGN

語法:  SIGN(x)

功能:  檢測x的正負.如果x<0返回-1.如果x=0返回0.如果x>0返回1.

 

SQL> select sign(123),sign(-100),sign(0) from dual;

 

SIGN(123) SIGN(-100)   SIGN(0)

1         -1         0

 

常和decode 結合使用

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

 

SIN

語法:SIN(x)

功能:計算x的正弦值. X是一個以弧度表示的角度.

 

SQL> select sin(1.57079) from dual;

 

SIN(1.57079)

   1

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

 

SINH

語法:SINH(x)

功能:返回x的雙曲正弦值.

 

SQL> select sin(20),sinh(20) from dual;

 

SIN(20)  SINH(20)

.91294525 242582598

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

 

SQRT

語法:  SQRT(x)

功能:  返回x的平方根. x必須是正數.

 

SQL> select sqrt(64),sqrt(10) from dual;

 

SQRT(64)  SQRT(10)

8 3.1622777

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

 

TAN

語法:  TAN(x)

功能:  計算x的正切值, x是一個以弧度位單位的角度.

 

SQL> select tan(20),tan(10) from dual;

 

TAN(20)   TAN(10)

2.2371609 .64836083

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

 

TANH

語法:  TANH(x)

功能:  計算x的雙曲正切值.

 

SQL> select tanh(20),tan(20) from dual;

 

TANH(20)   TAN(20)

1 2.2371609

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

 

TRUNC

語法:  TRUNC(x[,y])

功能:  截取數字函數,只舍不入函數, y缺省值爲0,x保留整數;y>0,x保留小數點右邊y位;y<0,x保留小數點左邊 |y| 位

 

SELECT   TRUNC (55.655, 2),   --55.65

         TRUNC (55.654, 2),   --55.65

         TRUNC (45.654, -1),  --40

         TRUNC (45.654, -2),  --0

         TRUNC (55.654, -2)   --0

  FROM   DUAL;

 

SELECT   TRUNC (SYSDATE, 'DD'),  --當天

         TRUNC (SYSDATE, 'MM'),  --本月第一天

         TRUNC (SYSDATE, 'yyyy'),  --本年第一天

         TRUNC (SYSDATE, 'day'),  --本週第一天

         TRUNC (SYSDATE, 'q')  --本季度第一天

  FROM   DUAL;

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

 

 

F.4  日期時間函數

(add_months,current_date,current_timestamp,dbtimesone,extract,from_tz,last_day,months_between,new_time,next_day,numtodsinternal,numtoyminternal,round,sys_extract_utc,sysdate,systimestamp,to_dsinternal,to_timestamp,to_timestamp_tz,to_yminternal,trunc,tz_offset)

 

說明:日期時間函數用於處理date和timestamp類型的數據,除了函數months_between返回數字外,其餘均返回date類型,Oracle以7位數字格式來存放日期數據,包括世紀、年、月、日、小時、分鐘、秒,並且默認日期顯式格式爲“DD-MON-YY”。

 

 

ADD_MONTHS

語法:ADD_MONTHS(d,x)

功能:返回日期d加上x個月後的月份。x可以是任意整數。如果結果日期中的月份所包含的天數比d日期中的“日”分量要少。(即相加後的結果日期中的日分量信息已經超過該月的最後一天,例如,8月31日加上一個月之後得到9月31日,而9月只能有30天)返回結果月份的最後一天。

使用位置:過程性語言和SQL語句。

 

SQL> select to_char(add_months(to_date('199912','yyyymm'),2),'yyyymm') from dual;

TO_CHA

200002

 

SQL> select to_char(add_months(to_date('199912','yyyymm'),-2),'yyyymm') from dual;

TO_CHA

199910

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

 

CURRENT_DATE

語法: CURRENT_DATE

功能:9i新增函數,返回當前會話時區所對應的日期時間。

 

select CURRENT_DATE from dual;

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

 

CURRENT_TIMESTAMP

語法:CURRENT_TIMESTAMP

功能:9i新增函數,返回當前會話時區所對應的日期時間。

 

select CURRENT_TIMESTAMP from dual;

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

 

DBTIMESONE

語法:DBTIMESONE

功能:9i新增函數,返回數據庫所在時區。

 

select DBTIMESONE from dual;

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

 

EXTRACT

語法: EXTRACT(s)

功能:9i新增函數,從日期時間值中取得所需要的特定數據

 

Select extract(year from sysdate) year from dual;

 

Yaer

2013

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

 

FROM_TZ

語法: FROM_TZ(s)

功能:9i新增函數,將特定時區的TIMESTAMP值轉換爲TIMESTAMP WITH TIME ZONE值。

 

Select from_tz(timestamp ‘2013-03-28 08:00:00’,’3:00’);

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

 

LAST_DAY

語法:LAST_DAY(d)

功能:計算包含日期的d的月份最後一天的日期.這個函數可以用來計算當月中剩餘天數.

使用位置:過程性語言和SQL語句。

LAST_DAY

返回日期的最後一天

SQL> select to_char(sysdate,'yyyy.mm.dd') aa from dual;

 

aa

2004.05.09

 

SQL> select last_day(sysdate) from dual;

 

LAST_DAY(S

31-5月 -04

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

 

LOCALTIMESTAMP

語法:LOCALTIMESTAMP

功能:9i新增函數,返回當前會話時區的日期時間。

 

Select LOCALTIMESTAMP from dual;

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

 

MONTHS_BETWEEN

語法:MONTHS_BETWEEN(date1,date2)

功能:計算date1和date2之間相差的月數.如果date1<date2,則返回負數;如果date1,date2這兩個日期中日分量信息是相同的,或者這兩個日期都分別是所在月的最後一天,那麼返回的結果是一個整數,否則包括一個小數,小數爲富餘天數除以31,Oracle以每月31天爲準計算結果。

SQL> select months_between('19-12月-1999','19-3月-1999') mon_between from dual;

MON_BETWEEN

  9

 

SQL>selectmonths_between(to_date('2000.05.20','yyyy.mm.dd'),to_date('2005.05.20','yyyy.dd')) mon_betw from dual;

MON_BETW

-60

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

 

NEW_TIME

語法:NEW_TIME(d,zone1,zone2)

功能:計算當時區zone1中的日期和時間是d時候,返回時區zone2中的日期和時間. zone1和zone2是字符串. 給出在this時區=other時區的日期和時間。

使用位置:過程性語言和SQL語句。

 

NEW_TIME   (d,   ‘tz1’,   ‘tz2’)

 

d::一個有效的日期型變量

tz1   &   tz2::下表中的任一時區

 

時區1   時區2       說明

AST       ADT           大西洋標準時間

BST       BDT           白令海標準時間

CST       CDT           中部標準時間

EST       EDT           東部標準時間

GMT                     格林尼治標準時間

HST       HDT           阿拉斯加—夏威夷標準時間

MST       MDT           山區標準時間

NST                     紐芬蘭標準時間

PST       PDT           太平洋標準時間

YST       YDT           YUKON標準時間

 

SQL> select to_char(sysdate,'yyyy.mm.dd hh24:mi:ss') bj_time,to_char(new_time

2  (sysdate,'PDT','GMT'),'yyyy.mm.dd hh24:mi:ss') los_angles from dual;

 

BJ_TIME             LOS_ANGLES

2004.05.09 11:05:32 2004.05.09 18:05:32

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

 

NEXT_DAY

語法:NEXT_DAY(d,string)

功能: 給出日期d和星期string之後計算下一個星期的日期. String是星期幾;當前會話的語言指定了一週中的某一天.返回值的時間分量與d的時間分量是相同的. String的內容可以忽略大小寫.

使用位置:過程性語言和SQL語句。

NEXT_DAY(date,'day')

 

SQL> select next_day('18-5月-2001','星期五') next_day from dual;

 

NEXT_DAY

25-5月 -01

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

 

NUMTODSINTERNAL

語法:NUMTODSINTERNAL(n,char_expr)

功能:將數字n轉換爲INTERNAL DAY TO SECOND格式, char_expr可以是DAY\HOUR\MINUTE或SECOND。

 

Select NUMTODSINTERNAL(1000,’minute’) from dual;

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

 

NUMTOYMINTERNAL

語法:NUMTOYMINTERNAL(n,char_expr)

功能:將數字n轉換爲INTERVAL YEAR TO MONTH格式,char_expr可以是year或者month。

 

Select NUMTOYMINTERNAL(100,’MONTH’) from dual;

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

 

ROUND

語法:ROUND(d[,format])

功能:將日期d按照由format指定的格式進行四捨五入處理處理.如果沒有給format則使用缺省設置`DD`.

使用位置:過程性語言和SQL語句。

 

Select round(sysdate,’MONTH’) from dual;

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

 

SYS_EXTRACT_UTC

語法:SYS_EXTRACT_UTC(date)

功能:返回特定時區時間所對應的格林威治時間。

 

Select SYS_EXTRACT_UTC(systimestamp) from dual;

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

 

SYSDATE

語法: SYSDATE

功能:取得當前的日期和時間,類型是DATE.它沒有參數.但在分佈式SQL語句中使用時,SYSDATE返回本地數據庫的日期和時間.

使用位置:過程性語言和SQL語句。

SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

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

 

SYSTIMESTAMP

語法:SYSTIMESTAMP

功能:9i新增函數,返回當前系統的日期時間及時區。

 

Select systimestamp from dual;

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

 

TO_DSINTERNAL

語法:TO_DSINTERNAL(char[,’nls_param’])

功能:9i新增函數,將符合特定日期和時間格式的字符串轉變爲INTERVAL DAY TO SECOND類型。

 

Select TO_DSINTERNAL(’58:10:10’) from dual;

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

 

TO_TIMESTAMP

語法:TO_TIMESTAMP(char[fmt[,’nls_param’]])

功能:9i新增函數,將符合特定日期和時間格式的字符串轉變爲TIMESTAMP類型。

select systimestamp from dual

 

1. 字符型轉成timestamp

Select TO_TIMESTAMP(’01-1月-03’) from dual;

select to_timestamp('01-10月-08 07.46.41.000000000 上午','dd-MON-yy hh:mi:ss.ff AM') 

from dual;

 

2. timestamp轉成date型

select cast(TO_TIMESTAMP('2015-10-01 21:11:11.328', 'yyyy-mm-dd hh24:mi:ss.ff') as date)

from dual;

 

3. date型轉成timestamp

select cast(sysdate as timestamp) date_to_timestamp

from dual;

 

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

 

TO_TIMESTAMP_TZ

語法:TO_TIMESTAMP_TZ(char[fmt[,’nls_param’]])

功能:9i新增函數,將符合特定日期和時間格式的字符串轉變爲TIMESTAMP WITH TIME ZONE類型。

 

Select TO_TIMESTAMP_TZ(’20130101’,’yyyymmdd’) from dual;

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

 

TO_YMINTERNAL

語法:TO_YMINTERNAL(char)

功能:9i新增函數,將符合特定日期和時間格式的字符串轉變爲INTERVAL YEAR TO MONTH類型。

 

select TO_TIMESTAMP('2015-10-01 21:11:11.328', 'yyyy-mm-dd hh24:mi:ss.ff') -

       TO_TIMESTAMP('2015-10-01 11:11:11.328', 'yyyy-mm-dd hh24:mi:ss.ff')

  from dual;

 

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

 

TRUNC

語法:TRUNC(d,format)

功能:截斷日期時間數據,計算截尾到由format指定單位的日期d.缺省參數同ROUNG.

使用位置:過程性語言和SQL語句。如果fmt='mi'表示保留分,截斷秒,如此類推。

 

SQL> select to_char(trunc(sysdate,'hh'),'yyyy.mm.dd hh24:mi:ss') hh,

  2  to_char(trunc(sysdate,'mi'),'yyyy.mm.dd hh24:mi:ss') hhmm from dual;

 

HH                  HHMM

2004.05.09 11:00:00 2004.05.09 11:17:00

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

 

TZ_OFFSET

語法:TO_OFFSET(time_zone_name||sessiontimezone||dbtimezone)

功能:9i新增函數,返回特定時區與UTC相比的時區偏移。

 

Select TO_OFFSET (’EST’) from dual;

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

 

 

F.5   轉換函數

(asciistr,bin_to_num,cast,chartorowid,compose,convert,decompose,hextoraw, INTERVAL,rawtonhex,rowidtochar,rowidtonchar,scn_to_timestamp,timestamp_to_scn,to_char,to_clob,to_date,to_lob,to_label,to_multi_byte,to_nchar,to_number,to_single_byte,translate...using,unistr)

 

說明:用於將數值從一種數據類型轉換爲另一種數據類型。

 

 

ASCIISTR

語法:ASCIISTR(s)

功能:9i新增函數,將任意字符集的字符串轉變爲數據庫字符集的ASCII字符串。

 

Select ASCIISTR (’中國’) 中 from dual;

 

\4E2D\56FD

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

 

BIN_TO_NUM

語法:BIN_TO_NUM(expr[,expr]…)

功能:9i新增函數,用於將位向量值轉變爲實際的數字值。

 

Select BIN_TO_NUM(1,0,1,1,1) 中 from dual;

 

23

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

 

CAST

語法:CAST(expr AS type_name)

功能:用於將一個內置數據類型或集合類型轉變爲另一個內置數據類型或集合類型。可以作用於長度爲0的空字段視圖建表格之用。

 

Select cast(SYSDATE AS VARCHAR2) 中 from dual;

Create table tb_dual nologging as Select cast(null as varchar2(1)) from dual;

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

 

CHARTOROWID

語法:CHARTOROWID(string)

功能: 將字符數據類型轉換爲ROWID類型,把包含外部格式的ROWID的CHAR或VARCHAR2數值轉換爲內部的二進制格式.參數string必須是包含外部格式的ROWID的18字符的字符串.oracle7和oracle8中的外部格式是不同的.CHARTOROWID是ROWIDTOCHAR的反函數.

使用位置:過程性語言和SQL語句。

 

SQL> select rowid,rowidtochar(rowid),ename from scott.emp;

 

ROWID              ROWIDTOCHAR(ROWID) ENAME

AAAAfKAACAAAAEqAAA AAAAfKAACAAAAEqAAA SMITH

AAAAfKAACAAAAEqAAB AAAAfKAACAAAAEqAAB ALLEN

AAAAfKAACAAAAEqAAC AAAAfKAACAAAAEqAAC WARD

AAAAfKAACAAAAEqAAD AAAAfKAACAAAAEqAAD JONES

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

 

COMPOSE

語法:COMPOSE(string)

功能:9i新增函數,用於將輸入字符串轉變爲UNICODE字符串值。

 

Select COMPOSE(‘o’||unistr(‘\0308’)) 中 from dual;

 

?

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

 

CONVERT

語法:CONVERT(string,dest_set[,source_set])

功能:將字符串string從source_set所表示的字符集轉換爲由dest_set所表示的字符集.如果source_set沒有被指定,它缺省的被設置爲數據庫的字符集.

使用位置:過程性語言和SQL語句。

 

SQL> select convert('中國','US7ASCII','WE8ISO8859P1') "conversion" from dual;

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

 

DECOMPOSE

語法:DECOMPOSE(string)

功能:9i新增函數,用於分解字符串並返回相應的UNICODE字符串。

 

Select COMPOSE(‘chateoux’) 中 from dual;

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

 

HEXTORAW

語法:HEXTORAW(string)

功能: 將string一個十六進制構成的字符串轉換爲二進制RAW數值. String中的每兩個字符表示了結果RAW中的一個字節..HEXTORAW和RAWTOHEX爲相反的兩個函數.

使用位置:過程性語言和SQL語句。

 

Select HEXTORAW (‘AB56’) 中 from dual;

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

 

INTERVAL

語法:INTERVAL 'integer [- integer]' {YEAR | MONTH} [(precision)][TO {YEAR | MONTH}]

功能:該數據類型常用來表示一段時間差, 注意時間差只精確到年和月. precision爲年或月的精確域, 有效範圍是0到9, 默認值爲2。

 

INTERVAL '123-2' YEAR(3) TO MONTH

表示: 123年2個月, "YEAR(3)" 表示年的精度爲3, 可見"123"剛好爲3爲有效數值, 如果該處YEAR(n), n<3就會出錯, 注意默認是2.

 

INTERVAL '11:12:10.1234567' HOUR TO SECOND

表示:小時,秒

結果:+00 11:12:10.123457

 

INTERVAL '123' YEAR(3)

表示: 123年0個月

 

INTERVAL '300' MONTH(3)

表示: 300個月, 注意該處MONTH的精度是3啊.

 

INTERVAL '4' YEAR

表示: 4年, 同 INTERVAL '4-0' YEAR TO MONTH 是一樣的

 

INTERVAL '50' MONTH

表示: 50個月, 同 INTERVAL '4-2' YEAR TO MONTH 是一樣

 

INTERVAL '123' YEAR

表示: 該處表示有錯誤, 123精度是3了, 但系統默認是2, 所以該處應該寫成 INTERVAL '123' YEAR(3) 或"3"改成大於3小於等於9的數值都可以的

 

INTERVAL '5-3' YEAR TO MONTH + INTERVAL '20' MONTH =

INTERVAL '6-11' YEAR TO MONTH

表示: 5年3個月 + 20個月 = 6年11個月

 

RAWTONHEX

語法:RAWTONHEX(rawvalue)

功能:9i新增函數,將RAW類數值rawvalue轉換爲一個相應的十六進制表示的字符串. rawvalue中的每個字節都被轉換爲一個雙字節的字符串. RAWTOHEX和HEXTORAW是兩個相反的函數.

使用位置:過程性語言和SQL語句。

 

Select rawtonhex(‘7D’) from dual;

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

 

ROWIDTOCHAR

語法:ROWIDTOCHAR(rowid)

功能:9i新增函數,將ROWID類型的數值rowid轉換爲varchar2的字符串表示,在oracle7和oracle8之間有些不一樣的地方. ROWIDTOCHAR和CHARTOROWID是兩個相反的函數.

使用位置:過程性語言和SQL語句。

 

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

 

ROWIDTONCHAR

語法:ROWIDTOCHAR(rowid)

功能:9i新增函數,將ROWID類型的數值rowid轉換爲Nvarchar2的字符串表示,在oracle7和oracle8之間有些不一樣的地方. ROWIDTOCHAR和CHARTOROWID是兩個相反的函數.

使用位置:過程性語言和SQL語句。

 

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

 

SCN_TO_TIMESTAMP

語法:SCN_TO_TIMESTAMP(number)

功能:10g新增函數,根據輸入的scn值返回對應的大概日期時間,其中number用於指定scn值.

使用位置:過程性語言和SQL語句。

 

Select SCN_TO_TIMESTAMP(ora_rowscn) from emp;

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

 

TIMESTAMP_TO_SCN

語法:TIMESTAMP_TO_SCN(timestamp)

功能:10g新增函數,用於根據輸入的timestamp返回所對應的scn值,其中timestamp、用於指定日期時間。

使用位置:過程性語言和SQL語句。

 

Select TIMESTAMP_TO_SCN(order_date) from emp;

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

 

TO_CHAR

語法1:TO_CHAR(character)

功能1:用於將NCHAR,NVARCHAR2,CLOB,NCLOB數據轉變爲數據庫字符集數據,當用於NCHAR,NVARCHAR2,NCLOB時字符用單引號括起來,前面加上n。

 

Select to_char(n’中國’) from dual;

 

語法2:TO_CHAR(d [,format[,nlsparams]])

功能2:將日期d轉換爲一個VARCHAR2類型的字符串.format指定日期格式,.如果沒有給定format,使用的就是該會話的缺省日期格式.nlsparams指定NLS參數. nlsparams的格式是:“NLS_DATE_LANGUAGE”

使用位置:過程性語言和SQL語句。

 

select to_char(sysdate,'yyyy/mm/dd hh24:mi:ss') from dual;

2004/05/09 21:14:41

 

語法3:TO_CHAR(labels[,format])

功能3:將MISLABEL的LABEL轉換爲一個VARCHAR2類型的變量.

使用位置:在trusted數據庫的過程性語句和SQL語句。

 

語法4: TO_CHAR(num[,format[,nlsparams]])

功能4:將NUMBER類型的參數num轉換爲一個VARCHAR2類型的變量.如果指定了format,那麼它會控制這個轉換處理.表5-5列除了可以使用的數字格式.如果沒有指定format,它會控制這個轉換過程.下面列出了可以使用的數字格式.如果沒有指定format,那麼結果字符串將包含和num中有效位的個數相同的字符. nlsparams用來指定小數點和千分位分隔符和貨幣符號.可以使用的格式:`NLS_NUMERIC_CHARS=”dg”NLS_CURRENCY=”string”

d和g分別表示列小數點和千分位分隔符. String表示了貨幣的符號.例如,在美國小數點分隔符通常是一個句點(.),分組分隔符通常是一個逗號(,),而千分位符號通常是一個$.

使用位置:過程性語言和SQL語句。

 

SELECT TO_CHAR(TO_DATE('11-oct-2007'), 'fmDdthsp "of" Month, Year') FROM DUAL;

以上正確,需要注意的是不屬於轉換日期格式標識符需要使用雙引號,如上面的"of"

 

SELECT promo_name, TRIM(TO_CHAR(promo_end_date,'Day')) ||', '||

                   TRIM(TO_CHAR(promo_end_date,'Month')) ||' '||

                   TRIM(TO_CHAR(promo_end_date,'DD, YYYY')) AS last_day

       FROM promotions;

等價於下面,fm有trim的作用去掉多餘空格

SELECT promo_name,TO_CHAR(promo_end_date,'fmDay')||','||

                  TO_CHAR(promo_end_date,'fmMonth')||' '||

                  TO_CHAR(promo_end_date,'fmDD, YYYY') AS last_day

       FROM promotions;

上述當中,Day\DAY\day等等轉換後都是帶空格的,而YYYY則不會。

 

--將number格式轉換爲貨幣格式,前面均帶空格

select TO_CHAR(12345,'$99999D99') from dual;-- $12345.00

SELECT TO_CHAR(1890.55,'$00G000D00') FROM DUAL;-- $01,890.55

SELECT TO_CHAR(1890.55,'$99G999D99') FROM DUAL;--   $1,890.55

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

 

TO_CLOB

語法:TO_CLOB (char)

功能:9i新增函數,將字符串轉變爲CLOB類型。Char參數使用NCHAR,NVARCHAR2,NCLOB類型,字符串需要單引號括起來,且在前面加上n.

 

Select TO_CLOB(n’中國’) from dual;

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

 

TO_DATE

語法:TO_DATE(String[,format[,nlsparams]])

功能:將符合特定日期格式的字符串轉變爲date類型. format是一個日期格式字符串.當不指定format的時候,使用該會話的缺省日期格式,需要特別注意的,缺省格式並不適用'2015-03-03'這種形式。

 

Select to_date(‘20130101’,’yyyymmdd’) from dual;--正確

SELECT TO_DATE('01/JANUARY/2007') FROM DUAL;--正確,缺省支持

SELECT TO_DATE('01-JANUARY-2007') FROM DUAL;--正確,缺省支持

SELECT TO_DATE('2015-03-03') FROM DUAL;--錯誤,缺省不支持

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

 

TO_LOB

語法:TO_LOB (long_column)

功能:9i新增函數,將LONG或LONG ROW列的數據轉變爲相應的LOB類型。但需要注意的是,在單純的select語句中會報錯,如例子所示。

使用位置:過程性語言和SQL語句。

 

例子:to_lob轉化long

select VIEW_NAME,to_lob(text) text from user_views;  --會報錯

create table temp_liutao nologging as select VIEW_NAME,to_lob(text) text from user_views  --通過

 

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

 

TO_LABEL

語法:TO_LABEL(String[,format])

功能:將String轉換爲一個MLSLABEL類型的變量. String可以是VARCHAR2或者CHAR類型的參數.如果指定了format,那麼它就會被用在轉換中.如果沒有指定format,那麼使用缺省的轉換格式.

使用位置:過程性語言和SQL語句。

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

 

TO_MULTI_BYTE

語法:TO_MULTI_BYTE(String)

功能:計算所有單字節字符都替位換位等價的多字節字符的String.該函數只有當數據庫字符集同時包含多字節和單字節的字符的時候有效.否則, String不會進行任何處理. TO_MULTI_BYTE和TO_SINGLE_BYTE是相反的兩個函數.

使用位置:過程性語言和SQL語句。

 

SQL>  select to_multi_byte('高') from dual;

 

TO

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

 

TO_NCHAR

語法1:TO_NCHAR(char)

功能1:將字符串由數據庫字符集轉變爲民族字符集。

 

SQL>  select TO_NCHAR ('高') from dual;

 

語法2:TO_NCHAR(date,[,fmt[,nls_param]])

功能2:將日期時間值轉變爲民族字符集。

 

SQL>  select TO_NCHAR (sysdate) from dual;

 

語法3:TO_NCHAR(number)

功能3:將數字值轉變爲民族字符集。

 

SQL>  select TO_NCHAR (10) from dual;

 

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

 

TO_NUMBER

語法: TO_NUMBER(String[,format[,nlsparams]])

功能:將CHAR或者VARCHAR2類型的String轉換爲一個NUMBER類型的數值.如果指定了format,那麼String應該遵循相應的數字格式. Nlsparams的行爲方式和TO_CHAR中的完全相同.TO_NUMBER和TO_CHAR是兩個相反的函數.

使用位置:過程性語言和SQL語句。

 

SQL> select to_number('1999') year from dual;

 

     YEAR

     1999

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

 

TO_SINGLE_BYTE

語法: TO_SINGLE_BYTE(String )

功能:計算String中所有多字節字符都替換爲等價的單字節字符.該函數只有當數據庫字符集同時包含多字節和單字節的字符的時候有效.否則, String不會進行任何處理.

TO_MULTI_BYTE和TO_SINGLE_BYTE是相反的兩個函數.

使用位置:過程性語言和SQL語句。

 

Select TO_SINGLE_BYTE(‘a b c’) from dual;

 

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

 

TRANSLATE…USING

語法: TRANSLATE(str1 USING zfj)

功能:將字符串轉變爲數據庫字符集(char_cs)或民族字符集(nchar_cs)

 

Select TRANSLATE(‘中國’ using nchar_cs) from dual;

 

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

 

UNISTR

語法: UNISTR(str1)

功能:9i新增函數,輸入字符串返回相應的UNICODE字符

 

Select UNISTR (‘\00D6’) from dual;

 

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

 

 

F.6  分組統計函數

 

(avg,corr,count,covar_pop,covar_samp,cume_dist,dense_rank,first,group_id,grouping,grouping_id,glb,last,listagg,lub,max,min,percent_rank,percentile_cont,percentile_disc,rank,stddev,stddev_pop,stddev_samp,sum,var_pop,var_samp,variance)

 

 

說明:分組函數也被稱爲多行函數,它會根據輸入的多行數據返回一個結果。主要用於執行數據統計或彙總操作,並且分組函數只能出現在select語句選擇列表、order by子句和having子句中。注意分組函數不能直接在plsql中引用,只能在內嵌select語句中使用。

 

 

AVG

語法:AVG([DISTINCT|ALL]col)

功能:返回一列數據的平均值,缺省使用是ALL修飾符,all表示對所有的值求平均值,distinct排重後再求平均值

使用位置:查詢列表和GROUP BY子句.

 

SQL> select avg(distinct sal) from gao.table3;

 

AVG(DISTINCTSAL)

         3333.33

 

SQL> select avg(all sal) from gao.table3;

 

AVG(ALLSAL)

    2592.59

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

 

CORR

語法:CORR([expr1,expr2)

功能:返回成對數值的相關係數,其數值使用表達式”covar_pop(expr1,expr2)/(stddev_pop(expr1)*stddev_pop(expr2))”

使用位置:查詢列表和GROUP BY子句.

 

SQL> select corr(list_,min_) from gao.table3;

 

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

 

COUNT

語法:COUNT(*|[DISTINCT|ALL] col)

功能:得到查詢中行的數目.如果使用了*獲得行的總數.如果在參數中傳遞的是選擇列表,那麼計算的是非空數值。我基於10G測試,有主鍵情況下,count(主鍵)最快,count(1)和count(*)調動主鍵統計,時間上一樣;無主鍵情況下count(索引列)最快,但需要注意count(列名)統計不包括null,count(常量)和count(*)包括null

 

Select count(distinct sal) from emp;

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

 

COVAR_POP

語法:COVAR_POP(expr1,expr2)

功能:返回成對數字的協方差,其數值使用表達式”(sum(expr1*expr2)-sum(expr1)*sum(expr2)/n)/n”

 

Select COVAR_POP(column1,column2) from emp;

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

 

COVAR_SAMP

語法:COVAR_SAMP(expr1,expr2)

功能:返回成對數字的協方差,其數值使用表達式”(sum(expr1*expr2)-sum(expr1)*sum(expr2)/n)/n-1”

 

Select COVAR_SAMP(column1,column2) from emp;

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

 

CUME_DIST

語法:CUME_DIST(expr1,expr2…) within group (order by expr1,expr2…)

功能:返回特定數值在一組行數據中的累積分佈比例。

 

Select CUME_DIST(2000) within group (order by sel) from emp;

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

 

DENSE_RANK

語法:DENSE_RANK(expr1,expr2…) within group (order by expr1,expr2…)

功能:返回特定數據在一組行數據中的等級。

 

Select DENSE_RANK (5000) within group (order by sel) from emp;

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

 

FIRST

語法:FIRST

功能:9i新增,不能單獨使用,必須與其他分組函數結合使用。通過使用該函數,可以取得排序等級的第一級,然後然後使用分組函數彙總該等級的數據。

 

Select min(sal) keep (dense_rank first order by comm desc) from emp;

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

 

GROUP_ID

語法:GROUP_ID

功能:9i新增,用於區分分組結果中的重複行。

 

Select deptno,job,avg(sal),group_id() from emp group by deptno,rollup(deptno,job);

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

 

GROUPING

語法:GROUPING(expr)

功能:用於確定統計結果是否使用了特定的表達式,返回0則用到了表達式,1則未用。

例如:select corp_code,org_level,count(1),

       grouping(corp_code),

       grouping(org_level)

  from tb_sys_organization

group by rollup(corp_code, org_level);

 

select case grouping(corp_code)

         when 1 then 'all_corp' else corp_code end corp_code,

       case grouping(org_level)

         when 1 then 'all_org' else org_level end org_level,

       count(1)

  from tb_sys_organization

group by rollup(corp_code, org_level);

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

 

GROUPING_ID

語法:GROUPING_ID(expr1[,expr2]…)

功能:9i新增,用於返回對應於特定行的grouping位向量的值。

 

Select deptno,job,sum(sal),grouping_id(job,deptno) from emp group by rollup(deptno,jon)

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

 

GLB

語法:GLB ([DISTINCT|ALL]label)

功能:獲得由label界定的最大下界.函數僅用於trusted oracle.

使用位置:trusted數據庫的選擇列表和GROUP BY子句.

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

 

LAST

語法:LAST

功能:9i新增,不能單獨使用,必須與其他分組函數結合使用。通過使用該函數,可以取得排序等級的最後一級,然後使用分組函數彙總該等級的數據。

 

Select min(sal) keep (dense_rank last order by comm) from emp;

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

 

LISTAGG

語法:listagg

功能:列轉行

select listagg(o.rybs, ';') within group(order by o.rybs)

  from gk_xszrr o

 where rownum <= 100;

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

 

LUB

語法:LUB ([DISTINCT|ALL]label)

功能:獲得由label界定的最小上界.用於trusted oracle.數據庫.

使用位置:trusted數據庫的選擇列表和GROUP BY子句.過程性語言和SQL語句。

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

 

MAX

語法:MAX([DISTINCT|ALL]col)

功能:獲得選擇列表或表達式的最大值,ALL表示對所有的值求最大值,DISTINCT表示對不同的值求最大值,相同的只取一次

使用位置:僅用於查詢選擇和GROUP BY子句.

 

SQL> select max(distinct sal) from scott.emp;

 

MAX(DISTINCTSAL)

            5000

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

 

MIN

語法:MIN([DISTINCT|ALL]col)

功能:獲得選擇列表或表達式的最小值,ALL表示對所有的值求最小值,DISTINCT表示對不同的值求最小值,相同的只取一次

使用位置:僅用於查詢選擇和GROUP BY子句.

 

SQL> select min(all sal) from gao.table3;

 

MIN(ALLSAL)

    1111.11

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

 

PERCENT_RANK

語法:PERCENT_RANK(expr1,expr2…)WITHIN GROUP (ORDER BY expr1,expr2…)

功能:該函數用於返回特定數值在統計級別中所佔的比例。

 

SQL> select percent_rank(3000) within group(order by sal) from emp;

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

 

PERCENTILE_CONT

語法:PERCENTILE_CONT(percent_expr)WITHIN GROUP (ORDER BY expr)

功能:9i新增,用於返回在統計級別中處於某個百分點的特定數值(按照連續分佈模型確定)。

 

SQL> select percentile_cont(.6) within group(order by sal) from emp;

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

 

PERCENTILE_DISC

語法:PERCENTILE_DISC(percent_expr)WITHIN GROUP (ORDER BY expr)

功能:9i新增,用於返回在統計級別中處於某個百分點的特定數值(按照離散分佈模型確定)。

 

SQL> select percentile_cont(.6) within group(order by sal) from emp;

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

 

RANK

語法:RANK(expr1,expr2…)WITHIN GROUP (ORDER BY expr1,expr2…)

功能:該函數用於返回特定數值中所佔據的等級。

 

SQL> select rank(3000) within group(order by sal) from emp;

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

 

STDDEV

語法:STDDEV([DISTINCT|ALL]col)

功能:獲得選擇列表的標準差.標準差爲方差(VARIANCE)的平方根, ALL表示對所有的值求標準差,DISTINCT表示只對不同的值求標準差.

使用位置:僅用於查詢選擇和GROUP BY子句.

SQL> select stddev(sal) from scott.emp;

 

STDDEV(SAL)

  1182.5032

 

SQL> select stddev(distinct sal) from scott.emp;

 

STDDEV(DISTINCTSAL)

           1229.951

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

 

STDDEV_POP

語法:STDDEV_POP(col)

功能:返回統計標準差,其數值是統計方差的平方根.

使用位置:僅用於查詢選擇和GROUP BY子句.

SQL> select stddev_pop(sal) from scott.emp;

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

 

STDDEV_SAMP

語法:STDDEV_SAMP(col)

功能:返回採樣標準差,其數值是採樣方差的平方根.

SQL> select stddev_samp(sal) from scott.emp;

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

 

SUM

語法:SUM([DISTINCT|ALL]col)

功能:返回選擇的數值和總和

使用位置:僅用於查詢選擇和GROUP BY子句.

Select sum(sal) from emp;

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

 

VAR_POP

語法:VAR_POP([DISTINCT|ALL]col)

功能:返回統計方差.使用公式爲(sum(expr*expr)-sum(expr)*sum(expr)/count(expr))/(count(expr)

使用位置:僅用於查詢選擇和GROUP BY子句.

SQL> select VAR_POP (sal) from scott.emp;

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

 

VAR_SAMP

語法:VAR_SAMP([col)

功能:返回採樣方差.使用公式爲(sum(expr*expr)-sum(expr)*sum(expr)/count(expr))/(count(expr-1)

使用位置:僅用於查詢選擇和GROUP BY子句.

SQL> select variance(sal) from scott.emp;

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

 

VARIANCE

語法:VARIANCE([DISTINCT|ALL]col)

功能:返回選擇列或表達式的採樣方差.使用公式爲(sum(expr*expr)-sum(expr)*sum(expr)/count(expr))/(count(expr-1)

使用位置:僅用於查詢選擇和GROUP BY子句.

SQL> select variance(sal) from scott.emp;

 

VARIANCE(SAL)

    1398313.9

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

 

分組函數,除了count(*),count(1),其他分組函數都會忽略null行,包括count(列名)。

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

 

 

F.7  集合函數

(cardinality,collect,powermultiset,powermultiset_by_cardinality,set)

 

說明:10g新增,爲了擴展集合類型(嵌套表和VARRAY)的功能,新增的針對集合類型的函數。

 

 

CARDINALITY

語法:CARDINALITY (nested_table)

功能:10g新增函數,返回嵌套表的實際元素個數。

 

SQL> select product_id,CARDINALITY(ad_text) from a;

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

 

COLLECT

語法:COLLECT (column)

功能:10g新增函數,用於根據輸入列和被選中行建立嵌套表結果。

 

SQL> select cast(COLLECT(ad_text) as t) from a;--t是嵌套表

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

 

POWERMULTISET

語法:POWERMULTISET(expr)

功能:10g新增函數,用於生成嵌套表的超集(包含所非空的嵌套表)。

 

SQL> select cast(POWERMULTISET (ad_text) as t) from a;--t是嵌套表

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

 

POWERMULTISET_BY_CARDINALITY

語法:POWERMULTISET_BY_CARDINALITY(expr,cardinatility)

功能:10g新增函數,用於根據嵌套表和元素個數,生成嵌套表的超集(包含所非空的嵌套表)。

 

SQL> select cast(POWERMULTISET_BY_CARDINALITY(ad_text) as t) from a;--t是嵌套表

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

 

SET

語法:SET(nested_table)

功能:改函數用於取消嵌套表中的重複結果,並生成新的嵌套表。

 

SQL> select SET(nested_table) from a;

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

 

 

F.8  對象函數

 

(deref,make_ref,ref,reftohex,value)

 

 

說明:對象函數用於操縱REF對象。REF對象實際是指對象類型數據的指針。

 

 

DEREF

語法:DEREF(expr)

功能:該函數用於返回參照對象exp所引用的對象實例。

 

SQL> select DEREF(address).city from table_name;

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

 

MAKE_REF

語法:MAKE_REF(object_table|object_view,key)

功能:該函數可以基於對象視圖或對象表(存在基於主鍵的對象標識符)的一行數據建立REF。

 

SQL> select MAKE_REF(oc_inventocies,3003) from dual;

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

 

REF

語法:REF(expr)

功能:該函數用於返回對象行所對應的REF值。

 

SQL> select REF(e) from table_name e;

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

 

REFTOHEX

語法:REFTOHEX(expr)

功能:該函數用於將REF值轉變爲十六進制字符串。

 

SQL> select REFTOHEX(REF(e)) from table_name e;

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

 

VALUE

語法:VALUE(expr)

功能:該函數用於返回行對象所對應的對象實例數據,其中expr用於指定行對象的別名。

 

SQL> select value(e).city from table_name e;

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

 

 

F.9  其他函數

 

(bfilename,coalesce,decode,depth,dump,empty_clob/empty_blob,existsnode,extract,extractvalue,greatest,greatest_lb,least,least_ub,nls_charset_decl_len,nls_charser_id,nls_charser_name,nullif,nvl2,over,path,sys_connect_by_path,sys_context,sys_dburigen,sys_guid,sys_typeid,sys_xmlagg,sys_xmlgen,uid,updatexml,user,userenv,vsize,xmlagg,xmlcolatival,xmlconcat,xmlelement,xmlforest,xmlsequence,xmltransform)

 

說明:除了上述涉及的函數外,Oracle還提供了一些單行函數。

 

 

BFILENAME

語法: BFILENAME(directory,file_name)

功能:獲得操作系統中與物理文件file_name相關的BFILE位置指示符. Directory是與OS路徑相關的DIRECTORY類型對象,file_name是OS文件的名稱。

使用位置:過程性語言和SQL語句。

 

SQL>insert into file_tb1 values(bfilename('lob_dir1','image1.gif'));

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

 

COALESCE

語法:COALESCE(exp1,exp2,exp3,...)

功能:9i新增,依次查找各參數,遇到非NULL則返回,各參數或表達式數據類型必須一致,如果都爲null則返回null。

 

Select COALESCE(v_e1,v_e2) from a;

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

 

DECODE

語法:DECODE(base_expr,comparel,valuel,Compare2,value2,…default)

功能:把base_expr與後面的每個compare(n)進行比較,如果匹配返回相應的value (n).如果沒有發生匹配,則返回default,每個valuel數據類型必須一致,如果沒有default則返回null。

 

Select decode(a,’金’,1,’銀’,2,0) from table_name;

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

 

DEPTH

語法:DEPTH(n)

功能:9i新增,用於返回xml方案under_path路徑所對應的相對層數,其中參數n用於指定相對層數。

 

Select fath(1),depth(2) from a;

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

 

DUMP

語法:DUMP(expr[,number_format[,start_position][,length]])

功能:獲得有關expr的內部表示信息的VARCHAR2類型的數值. number_format指定了按照下面返回數值的基數(base):

number_format    結果

8                八進制表示

10               十進制表示

16               十六進制表示

17               單字符

默認的值是十進制.

如果指定了start_position和length,那麼返回從start_position開始的長爲length的字節.缺省返回全部.

數據類型按照下面規定的內部數據類型的編碼作爲一個數字進行返回.

代碼    數據類型

1       VARCHAR2

2       NUMBER

8       LONG

12      DATE

23      RAW

69      ROWID

96      CHAR

106     MLSLABEL

 

SQL> col global_name for a30

SQL> col dump_string for a50

SQL> set lin 200

SQL> select global_name,dump(global_name,1017,8,5) dump_string from global_name;

 

GLOBAL_NAME                    DUMP_STRING

ORACLE.WORLD                   Typ=1 Len=12 CharacterSet=ZHS16GBK: W,O,R,L,D

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

 

EMPTY_CLOB/EMPTY_BLOB

語法:EMPTY_CLOB()

     EMPTY_BLOB()

功能:獲得一個空的LOB提示符(locator) .EMOTY_CLOB返回一個字符指示符,而EMPTY_BLOB返回一個二進制指示符, 用來對大數據類型字段進行初始化操作的函數.

使用位置:過程性語言和SQL語句.

 

Select EMPTY_CLOB() from dual;

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

 

EXISTSNODE

語法:EXISTSNODE(XMLType_instance,Xpatgh_string)

功能:9i新增,用於確認xml節點路徑是否存在,返回0表示不存在,1表示存在。.

使用位置:過程性語言和SQL語句.

 

Select EXISTSNODE(value(p),’/purchar/user’) from p;

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

 

EXTRACT

語法:EXTRACT (XMLType_instance,Xpatgh_string)

功能:9i新增,用於返回xml節點路徑下的相應內容。.

使用位置:過程性語言和SQL語句.

 

Select EXTRACT (value(p),’/purchar/user’) from p;

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

 

EXTRACTVALUE

語法:EXTRACTVALUE(XMLType_instance,Xpatgh_string)

功能:9i新增,用於返回xml節點路徑下的值。.

使用位置:過程性語言和SQL語句.

 

Select EXTRACTVALUE(value(p),’/purchar/user’) from p;

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

 

GREATEST

語法:GREATEST(expr1[,expr2]…)

功能:計算參數中最大的表達式.所有表達式的比較類型以expr1爲準,比較字符的編碼大小。

使用位置:過程性語言和SQL語句.

 

SQL> select greatest('AA','AB','AC') from dual;

 

GR

AC

SQL> select greatest('啊','安','天') from dual;

 

GR

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

 

GREATEST_LB

語法:GREATEST_LB(label1[,label2]…)

功能:返回標籤(label)列表中最大的下界.每個標籤必須擁有數據類型MLSLABEL、RAWMLSLABEL或者是一個表因字符串文字.函數只能用於truested oracle庫.

使用位置:過程性語言和SQL語句.

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

 

LEAST

語法:LEAST(expr1[,expr2]…)

功能:計算參數中最小的表達式.所有表達式的比較類型以expr1爲準,比較字符的編碼大小。

使用位置:過程性語言和SQL語句.

 

SQL> select least('啊','安','天') from dual;

 

LE

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

 

LEAST_UB

語法:LEAST_UB(label1[,label2]…)

功能:與GREATEST_UB函數相似,本函數返回標籤列表的最小上界.

使用位置:過程性語言和SQL語句.

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

 

NLS_CHARSET_DECL_LEN

語法:NLS_CHARSET_DECL_LEN(byte_count,charset_id)

功能:該函數用於返回字節數在特定字符集中佔有的字符個數。

 

select NLS_CHARSET_DECL_LEN(200,nls_charset_id(‘zhs16gbkf1xed’)) from dual;

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

 

NLS_CHARSET_ID

語法:NLS_CHARSET_ID(text)

功能:該函數用於返回字符集的ID號。

 

select NLS_CHARSET_ID( ‘zhs16gbkf1xed’) from dual;

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

 

NLS_CHARSET_NAME

語法:NLS_CHARSET_NAME(number)

功能:該函數用於返回字符集ID號所對應的字符集名。

 

select NLS_CHARSET_NAME(852) from dual;

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

 

NULLIF

語法:NULLIF (expr1, expr2) ->相等返回NULL,不等返回expr1

功能:9i新增,用於比較表達式expr1和expr2,相等返回null,否則返回expr1.

Select nullif(expr1, expr2) from table_name;

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

 

NVL

語法:NVL (expr1, expr2)

功能:用於將NULL轉變爲實際值,如果expr1是NULL,那麼返回expr2,否則返回expr1,expr1、expr2兩者必須爲同類型或expr2可以隱式轉換爲expr1,否則會報錯。

 

Select nvl(column_name,0) from tbale_name;

特別的date可以隱式轉換爲number,所以下面正確

SELECT NVL(to_date('2017-01-01','yyyy-mm-dd')-sysdate,SYSDATE)

  FROM dual;

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

 

NVL2

語法:NVL2 (expr1, expr2, expr3)

功能:9i新增,expr1不爲NULL,返回expr2;expr1爲NULL,返回expr3。expr1可以是任意數據類型;expr2與expr3可以是除LONG外的任意數據類型,但需要類型一致或expr3可以隱式轉換爲expr2。

 

特別的date可以隱式轉換爲number,所以下面正確

SELECT NVL2(to_date('01-jun-2016'),sysdate - to_date('01-jun-2016'),sysdate)

  FROM dual;

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

 

OVER

語法:sun/count ( * )

          over ( partition by XXX

      order by XXX )

功能:此函數爲分析函數,有別於本文介紹中的其他函數,更詳細看本博客“分析函數”專題

使用位置:過程性語言和SQL語句

 

sum(sal) over (partition by deptno order by ename)

 

COUNT( * )

OVER (

PARTITION BY class_id

ORDER BY ROWNUM

ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)

COUNT( * )

OVER (PARTITION BY e.phone

ORDER BY pp.sort, qs.user_id DESC, ROWNUM

ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)

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

 

PATH

語法:PATH(correction_integer)

功能:9i新增,用於返回特定XML資源所對應的相對路徑。

 

Select path(1),depth(2) from table_name;

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

 

SYS_CONNECT_BY_PATH

語法:SYS_CONNECT_BY_PATH(column,char)

功能:9i新增(只適用於層次查詢),用於返回從根到節點的列值路徑。

 

Select lpad(‘ ‘,2*level-1)||sys_connect_by_path(ename,’/’) from table_name start with ename=’scott’ connect by prior empno=mgr;

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

 

SYS_CONTEXT

語法:sys_coniext(‘context’,’attribute’)

功能:該函數用於返回應用上下文的特定屬性值,獲得系統信息,其中context爲上下文名,而attribute爲應用上下文名,此函數可以得到oracle主機及客戶端的信息。

 

SELECT   SYS_CONTEXT ('USERENV', 'TERMINAL') 客戶端名稱,

         SYS_CONTEXT ('USERENV', 'LANGUAGE') 客戶端語言,

         SYS_CONTEXT ('USERENV', 'SESSIONID') sessionid,

         SYS_CONTEXT ('USERENV', 'INSTANCE') instance,

         SYS_CONTEXT ('USERENV', 'ENTRYID') entryid,

         SYS_CONTEXT ('USERENV', 'ISDBA') isdba,

         SYS_CONTEXT ('USERENV', 'NLS_TERRITORY') 地區,

         SYS_CONTEXT ('USERENV', 'NLS_CURRENCY') 貨幣,

         SYS_CONTEXT ('USERENV', 'NLS_CALENDAR') nls_calendar,

         SYS_CONTEXT ('USERENV', 'NLS_DATE_FORMAT') 時間格式,

         SYS_CONTEXT ('USERENV', 'NLS_DATE_LANGUAGE') 時間語言,

         SYS_CONTEXT ('USERENV', 'NLS_SORT') nls_sort,

         SYS_CONTEXT ('USERENV', 'CURRENT_USER') current_user,

         SYS_CONTEXT ('USERENV', 'CURRENT_USERID') current_userid,

         SYS_CONTEXT ('USERENV', 'SESSION_USER') session_user,

         SYS_CONTEXT ('USERENV', 'SESSION_USERID') session_userid,

         SYS_CONTEXT ('USERENV', 'PROXY_USER') proxy_user,

         SYS_CONTEXT ('USERENV', 'PROXY_USERID') proxy_userid,

         SYS_CONTEXT ('USERENV', 'DB_DOMAIN') db_domain,

         SYS_CONTEXT ('USERENV', 'DB_NAME') 數據庫名稱,

         SYS_CONTEXT ('USERENV', 'HOST') 客戶端完成名稱,

         SYS_CONTEXT ('USERENV', 'OS_USER') 客戶端用戶,

         SYS_CONTEXT ('USERENV', 'EXTERNAL_NAME') external_name,

         SYS_CONTEXT ('USERENV', 'IP_ADDRESS') 客戶端IP地址,

         SYS_CONTEXT ('USERENV', 'NETWORK_PROTOCOL') 網絡協議,

         SYS_CONTEXT ('USERENV', 'BG_JOB_ID') bg_job_id,

         SYS_CONTEXT ('USERENV', 'FG_JOB_ID') fg_job_id,

         SYS_CONTEXT ('USERENV', 'AUTHENTICATION_TYPE') authentication_type,

         SYS_CONTEXT ('USERENV', 'AUTHENTICATION_DATA') authentication_data

  FROM   DUAL

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

 

SYS_DBURIGEN

語法:SYS_DBURIGEN(column)

功能:9i新增,根據列或屬性生產類型爲DBUriType的URL。

 

Select SYS_DBURIGEN(ename) from emp;

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

 

SYS_GUID

語法:SYS_GUID()

功能:該函數用於生產類型爲RAW的16字節的唯一標識符,每次調用該函數都會發生不同的RAW數據。

 

Select SYS_GUID() from emp;

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

 

SYS_TYPEID

語法:SYS_TYPEID(object_type_value)

功能:該函數用於返回唯一的類型ID值。

 

Select name, SYS_TYPEID(value(p)) from emp p;

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

 

SYS_XMLAGG

語法:SYS_XMLAGG(expr[,fmt])

功能:9i新增,用戶彙總所有XML文檔,並生成一個XML文檔。

 

Select SYS_XMLAGG(sys_xmlgen(ename)) from emp p;

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

 

SYS_XMLGEN

語法:SYS_XMLGEN(expr[,fmt])

功能:9i新增,根據數據庫表的行和列生成一個XMLType實例。

 

Select sys_xmlgen(ename) from emp p;

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

 

UID

語法:UID

功能:獲得當前數據庫用的惟一標識,標識是一個整數.

使用位置:過程性語言和SQL語句.

 

SQL> show user

USER 爲"GAO"

SQL> select username,user_id from dba_users where user_id=uid;

 

USERNAME                         USER_ID

GAO                                   25

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

 

UPDATEXML

語法:UPDATEXML(XMLType_instance,Xpath_string,value_expr)

功能:9i新增,用於更新特定XMLType實例相對應節點路徑的內容。

 

Update xmltable p set p=updatexml(value(p),’/pruch/user/text()’,’scott’)

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

 

USER

語法:USER

功能:取得當前oracle用戶的名字,返回的結果是一個VARCHAR2型字符串.

使用位置:過程性語言和SQL語句.

SQL> select user from  dual;

 

USER

GAO

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

 

USERENV

語法:USERENV(option)

功能:根據參數option,取得一個有關當前會話信息的VARCHAR2數值.

使用位置:過程性語言和SQL語句.

返回當前用戶環境的信息,opt可以是:

ENTRYID,SESSIONID,TERMINAL,ISDBA,LABLE,LANGUAGE,CLIENT_INFO,LANG,VSIZE

OPTION='ISDBA'若當前是DBA角色,則爲TRUE,否則FALSE.

OPTION='LANGUAGE'返回數據庫的字符集.

OPTION='SESSIONID'爲當前會話標識符.

OPTION='ENTRYID'返回可審計的會話標識符.

OPTION='LANG'返回會話語言名稱的ISO簡記.

OPTION='INSTANCE'返回當前的實例.

OPTION='terminal'返回當前計算機名

ISDBA  查看當前用戶是否是DBA如果是則返回true

SQL> select userenv('isdba') from dual;

USEREN

FALSE

 

SESSION返回會話標誌

SQL> select userenv('sessionid') from dual;

USERENV('SESSIONID')

                 152

 

ENTRYID返回會話人口標誌

SQL> select userenv('entryid') from dual;

USERENV('ENTRYID')

                 0

               

INSTANCE返回當前INSTANCE的標誌

SQL> select userenv('instance') from dual;

USERENV('INSTANCE')

                  1

 

LANGUAGE返回當前環境變量,包括語言、地區、字符集

SQL> select userenv('language') from dual;

USERENV('LANGUAGE')

SIMPLIFIED CHINESE_CHINA.ZHS16GBK

 

LANG返回當前環境的語言的縮寫

SQL> select userenv('lang') from dual;

USERENV('LANG')

ZHS

 

TERMINAL返回用戶的終端或機器的OS標示符

SQL> select userenv('terminal') from dual;

USERENV('TERMINA

GAO

 

CLIENT_INFO 返回由包DBMS_APPLICATION_INFO所存儲的用戶會話信息(64字節)

Select userenv(‘CLIENT_INFO’) from dual;

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

 

VSIZE

語法:VSIZE(value)

功能:獲得value的內部表示的字節數.如果value是NULL,結果是NULL.

使用位置: SQL語句.

 

SQL> select vsize(user),user from dual;

VSIZE(USER) USER

          6 SYSTEM

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

 

XMLAGG

語法:XMLAGG(XMLType_instance [order by sort_list])

功能:9i新增,用於彙總多個XML塊,並生成XML文檔。

 

Select xmlagg(xmlelement(“employee”,ename||’ ’||sal)) from emp where deptno=10;

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

 

XMLCOLATTVAL

語法:XMLCOLATTVAL(value_expr1[,value_expr2]…)

功能:9i新增,用於生成XML塊,並增加”column”作爲屬性名。

 

Select xmlelement(“emp”, XMLCOLATTVAL(ename,sall)) from emp where deptno=10;

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

 

XMLCONCAT

語法:XMLCONCAT(XMLType_instance1[,XMLType_instance2]…)

功能:9i新增,用於連接多個XMLType實例,並生成一個新的XMLType實例。

 

Select XMLCONCAT(xmlelement(‘ename’,ename), xmlelement(‘sal’,sal)) from emp where deptno=10;

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

 

XMLELEMENT

語法:XMLELEMENT(identifier[,xml_attribute_clause][,value_expr])

功能:9i新增,用於返回XMLType實例,其中參數identifier指定元素名,參數xml_attribute_clause指定元素屬性子句,參數value_expr指定元素值。

 

Select XMLELEMENT(‘date’,sysdate) from dual;

 

Select XMLELEMENT(“emp”,xmlattributes(empno as “id”,ename)) from emp;

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

 

XMLFOREST

語法:XMLPOREST(value_expr1[,value_expr2]…)

功能:9i新增,用於返回XML塊。

 

Select xmlelement(‘ename’, XMLPOREST[ename,sal]) from emp where deptno=10;

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

 

XMLSEQUENCE

語法:XMLSEQUENCE(xmltype_instance)

功能:9i新增,用於返回xmltype實例中頂級節點一下的varray元素。

 

Select XMLSEQUENCE(extract(value(x),’/purorder/line/*’)) from emp p where deptno=10;

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

 

XMLTRANSFORM

語法:XMLTRANSFORM(xmltype_instance,xsl_ss)

功能:9i新增,用於將xmltype實例按照XSL樣式進行轉換,並生成新的xmltype實例。

 

Select XMLTRANSFORM(w.warehouse_spec,x.coll).getclobval from warehouse w,xsl_tab x where w.name=x.name;

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章