现在的位置: 首页 > 综合 > 正文

Oracle 函数大全

2013年09月29日 ⁄ 综合 ⁄ 共 32624字 ⁄ 字号 评论关闭

建议使用CTRL + F精确搜索

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'  连接 fromdual;

 

连接

010-8888888823

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

 

INITCAP

语法:INITCAP(string)

功能:返回字符单词首字母大写,其余小写,单词用空格和非字母字符分隔。

SQL> select initcap('smith hEllo') uppfrom dual;

 

UPP

SmithHello

 

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

 

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> selectlpad(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 fromcount;

 

a

A r g e n t i n a

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

 

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 loheyou','he','i') from dual;

 

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

i loi you

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

 

TRIM/LTRIM/RTRIM

语法:TRIM/LTRIM/RTRIM(string1,[string2])

功能:删除从左/右边算起出现在string1中的字符的string2。String2被缺省设置为单个的空格。当遇到不在string2中的第一个字符,结果就被返回了。trim 去掉前和后

 

LTRIM 删除左边出现的字符串

RTRIM 删除右边出现的字符串

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

 

LTRIM(RTRIM('

gao qian jing

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

 

SOUNDEX

语法: SOUNDEX(string)

功能:  返回string的声音表示形式.这对于比较两个拼写不同但是发音类似的单词而言很有帮助,如果字符发音相同,则返回的结果会一致.

 

SOUNDEX返回一个与给定的字符串读音相同的字符串

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

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

SQL> insert into table1values('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个字节,一个中文字符占2个字节,韩文字符占4个字节。

 

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

 

截取字符串

08888888

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

 

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;

 

tra

9XXX9999

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

 

UPPER

语法: UPPER(string)

功能: 所有字母大写.(不是字母的字符不变.如果string是CHAR数据类型的,那么结果也是CHAR类型的.如果string是VARCHAR2类型的,那么结果也是VARCHAR2类型的).

 SQL> select upper('AaBbCcDd') upper fromdual;

 

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是从右边开始进行扫描的.第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('oracletraning','ra',1,2) instring from dual;

 

INSTRING

9

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

 

INSTRB

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

功能:  和INSTR相同,只是操作的对参数字符使用的位置的是字节.

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

 

LENGTH

语法: LENGTH(string)

功能:  返回字符串的长度

 

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) fromdual;

 

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) fromdual;

 

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

1024        27

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

 

ROUND

语法: ROUND(x[,y])

功能:  四舍五入函数,y缺省值为0,x保留整数;y>0,x保留小数点右边y位;y<0,x保留小数点左边 |y| 位

 

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> selectto_char(add_months(to_date('199912','yyyymm'),2),'yyyymm') from dual;

TO_CHA

200002

 

SQL> selectto_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 fromdual;

 

Yaer

2013

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

 

FROM_TZ

语法: FROM_TZ(s)

功能:9i新增函数,将特定时区的TIMESTAMP值转换为TIMESTAMP WITH TIME ZONE值。

 

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

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

 

LAST_DAY

语法:LAST_DAY(d)

功能:计算包含日期的d的月份最后一天的日期.这个函数可以用来计算当月中剩余天数.

使用位置:过程性语言和SQL语句。

LAST_DAY

返回日期的最后一天

SQL> selectto_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语句。

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.ddhh24: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 DAYTO SECOND格式, char_expr可以是DAY\HOUR\MINUTE或SECOND。

 

Select NUMTODSINTERNAL(1000,’minute’) fromdual;

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

 

NUMTOYMINTERNAL

语法:NUMTOYMINTERNAL(n,char_expr)

功能:将数字n转换为INTERVAL YEARTO MONTH格式,char_expr可以是year或者month。

 

Select NUMTOYMINTERNAL(100,’MONTH’) fromdual;

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

 

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) fromdual;

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

 

SYSDATE

语法: SYSDATE

功能:取得当前的日期和时间,类型是DATE.它没有参数.但在分布式SQL语句中使用时,SYSDATE返回本地数据库的日期和时间.

使用位置:过程性语言和SQL语句。

SQL> select to_char(sysdate,'yyyy-mm-ddhh24: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 TO_ TIMESTAMP(’01-1月-03’) 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_TZ(’20130101’,’yyyymmdd’)from dual;

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

 

TRUNC

语法:TRUNC(d,format)

功能:截断日期时间数据,计算截尾到由format指定单位的日期d.缺省参数同ROUNG.

使用位置:过程性语言和SQL语句。如果fmt='mi'表示保留分,截断秒,如此类推。

 

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

  2  to_char(trunc(sysdate,'mi'),'yyyy.mm.ddhh24: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,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)

功能:用于将一个内置数据类型或集合类型转变为另一个内置数据类型或集合类型。

 

Select cast(SYSDATE AS VARCHAR2) 中 from dual;

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

 

CHARTOROWID

语法:CHARTOROWID(string)

功能: 将字符数据类型转换为ROWID类型,把包含外部格式的ROWID的CHAR或VARCHAR2数值转换为内部的二进制格式.参数string必须是包含外部格式的ROWID的18字符的字符串.oracle7和oracle8中的外部格式是不同的.CHARTOROWID是ROWIDTOCHAR的反函数.

使用位置:过程性语言和SQL语句。

 

SQL> selectrowid,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;

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

 

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) fromemp;

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

 

TIMESTAMP_TO_SCN

语法:TIMESTAMP_TO_SCN(timestamp)

功能:10g新增函数,用于根据输入的timestamp返回所对应的scn值,其中timestamp、用于指定日期时间。

使用位置:过程性语言和SQL语句。

 

Select TIMESTAMP_TO_SCN(order_date) fromemp;

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

 

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/ddhh24:mi:ss') from dual;

 

TO_CHAR(SYSDATE,'YY

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语句。

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

 

TO_CLOB

语法:TO_CLOB (char)

功能:9i新增函数,将字符串转变为CLOB类型。Char参数使用NCHAR,NVARCHAR2,NCLOB类型,字符串需要单引号括起来,且在前面加上n.

使用位置:过程性语言和SQL语句。

 

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

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

 

TO_DATE

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

功能:将符合特定日期格式的字符串转变为date类型. format是一个日期格式字符串.当不指定format的时候,使用该会话的缺省日期格式.

使用位置:过程性语言和SQL语句。

 

Select to_date(‘20130101’,’yyyymmdd’) fromdual;

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

 

TO_LOB

语法:TO_LOB (long_column)

功能:9i新增函数,将LONG或LONG ROW列的数据转变为相应的LOB类型.

使用位置:过程性语言和SQL语句。

 

Select TO_LOB(long_column) from dual;

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

 

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 fromdual;

 

     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(str1USING 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,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) fromemp;

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

 

CUME_DIST

语法:CUME_DIST(expr1,expr2…) within group (orderby expr1,expr2…)

功能:返回特定数值在一组行数据中的累积分布比例。

 

Select CUME_DIST(2000) within group (orderby sel) from emp;

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

 

DENSE_RANK

语法:DENSE_RANK(expr1,expr2…) within group (orderby expr1,expr2…)

功能:返回特定数据在一组行数据中的等级。

 

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

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

 

FIRST

语法:FIRST

功能:9i新增,不能单独使用,必须与其他分组函数结合使用。通过使用该函数,可以取得排序等级的第一级,然后然后使用分组函数汇总该等级的数据。

 

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

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

 

GROUP_ID

语法:GROUP_ID

功能:9i新增,用于区分分组结果中的重复行。

 

Select deptno,job,avg(sal),group_id() fromemp 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位向量的值。

 

Selectdeptno,job,sum(sal),grouping_id(job,deptno) from emp group byrollup(deptno,jon)

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

 

GLB

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

功能:获得由label界定的最大下界.函数仅用于trusted oracle.

使用位置:trusted数据库的选择列表和GROUPBY子句.

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

 

LAST

语法:LAST

功能:9i新增,不能单独使用,必须与其他分组函数结合使用。通过使用该函数,可以取得排序等级的最后一级,然后使用分组函数汇总该等级的数据。

 

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

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

 

LUB

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

功能:获得由label界定的最小上界.用于trusted oracle.数据库.

使用位置:trusted数据库的选择列表和GROUPBY子句.过程性语言和SQL语句。

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

 

MAX

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

功能:获得选择列表或表达式的最大值,ALL表示对所有的值求最大值,DISTINCT表示对不同的值求最大值,相同的只取一次

使用位置:仅用于查询选择和GROUP BY子句.

 

SQL> select max(distinct sal) fromscott.emp;

 

MAX(DISTINCTSAL)

           5000

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

 

MIN

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

功能:获得选择列表或表达式的最小值,ALL表示对所有的值求最小值,DISTINCT表示对不同的值求最小值,相同的只取一次

使用位置:仅用于查询选择和GROUP BY子句.

 

SQL> select min(all sal) fromgao.table3;

 

MIN(ALLSAL)

   1111.11

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

 

PERCENT_RANK

语法:PERCENT_RANK(expr1,expr2…)WITHIN GROUP (ORDERBY expr1,expr2…)

功能:该函数用于返回特定数值在统计级别中所占的比例。

 

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

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

 

PERCENTILE_CONT

语法:PERCENTILE_CONT(percent_expr)WITHIN GROUP (ORDERBY expr)

功能:9i新增,用于返回在统计级别中处于某个百分点的特定数值(按照连续分布模型确定)。

 

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

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

 

PERCENTILE_DISC

语法:PERCENTILE_DISC(percent_expr)WITHIN GROUP (ORDERBY expr)

功能:9i新增,用于返回在统计级别中处于某个百分点的特定数值(按照离散分布模型确定)。

 

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

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

 

RANK

语法:RANK(expr1,expr2…)WITHIN GROUP (ORDER BYexpr1,expr2…)

功能:该函数用于返回特定数值中所占据的等级。

 

SQL> select rank(3000) withingroup(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) fromscott.emp;

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

 

STDDEV_SAMP

语法:STDDEV_SAMP(col)

功能:返回采样标准差,其数值是采样方差的平方根.

SQL> select stddev_samp(sal) fromscott.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) fromscott.emp;

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

 

VAR_SAMP

语法:VAR_SAMP([col)

功能:返回采样方差.使用公式为(sum(expr*expr)-sum(expr)*sum(expr)/count(expr))/(count(expr-1)

使用位置:仅用于查询选择和GROUP BY子句.

SQL> select variance(sal) fromscott.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_namee;

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

 

VALUE

语法:VALUE(expr)

功能:该函数用于返回行对象所对应的对象实例数据,其中expr用于指定行对象的别名。

 

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

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

 

 

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,nvl,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_tb1values(bfilename('lob_dir1','image1.gif'));

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

 

COALESCE

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

功能:9i新增,依次查找各参数,遇到非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

使用位置:过程性语言和SQL语句。

 

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> selectglobal_name,dump(global_name,1017,8,5) dump_string from global_name;

 

GLOBAL_NAME                    DUMP_STRING

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

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

 

EMPTY_CLOB/EMPTY_BLOB

语法:EMPTY_CLOB()

     EMPTY_BLOB()

功能:获得一个空的LOB提示符(locator) .EMOTY_CLOB

抱歉!评论已关闭.