(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>selectchr(54740)别名1,chr(65)别名2fromdual;
别名1别名2
赵A
--------------------------------------------------
CONCAT
语法:CONCAT(string1,string2)
功能:连接两个字符串
SQL>selectconcat('010-','88888888')||'23'连接fromdual;
连接
010-8888888823
INITCAP
语法:INITCAP(string)
功能:返回字符单词首字母大写,其余小写,单词用空格和非字母字符分隔。
SQL>selectinitcap('smithhEllo')uppfromdual;
UPP
SmithHello
LOWER
语法:LOWER(string)
功能:所以字母小写
SQL>selectlower('AaBbCcDd')AaBbCcDdfromdual;
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,'*')fromdual;
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指定默认匹配操作的文本串。
selectREGEXP_REPLACE(a,’(.)’,’\1’)afromcount;
Argentina
体会NVL为DECODE,只支持NVL()内不再有其它括号()
selecta,
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,
'(.*),(.*)','decode(\1,null,\2,'''',\2,\1)'
)a7,
substr(a,1,instr(upper(a),'NVL(',1)-1)||REGEXP_REPLACE(
)||substr(a,instr(upper(a),')',instr(upper(a),'NVL(',1),1)+1)a8
fromtemp_liuta;
判断是否是数字
regexp_replace(a,'\d+','')isnull
REGEXP_SUBSTR
语法:REGEXP_SUBSTR(str1,pattem[,pos[,occ[,par]]])
功能:10g新增函数,扩展了SUBSTR函数的功能,并且用于按照特定表达式的规则返回字符串的子串。其中参数str1指定源字符表达式,pattem指定规则表达式,pos指定起始搜索位置,occ指定替换出现的第几个字符串,par指定默认匹配操作的文本串。
a
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>selectreplace('heloheyou','he','i')fromdual;
replace('heloheyou','he','i')
iloiyou
TRIM/LTRIM/RTRIM
语法1:LTRIM/RTRIM(string1,[string2])
语法2:trim([string2]fromstring1)
语法1功能:中删除从左/右边算起出现在string1中的字符string2,string2如果是多个字符则逐个单字符比对删除,tring2被缺省设置为单个的空格。当遇到不在string2中的第一个字符,结果就被返回了;
语法2功能:删除左右两边出现在string1中的字符string2,tring2必须为单字符,否则报错。
selectltrim(rtrim('gaoqianjing',''),'')fromdual;
gaoqianjing
selectltrim('abaaaabbbcda','ab')fromdual;
cda
selecttrim('a'from'abacda')fromdual;
bacd
SOUNDEX
语法:SOUNDEX(string)
功能:返回string的声音表示形式.这对于比较两个拼写不同但是发音类似的单词而言很有帮助,如果字符发音相同,则返回的结果会一致.
SOUNDEX返回一个与给定的字符串读音相同的字符串
SQL>createtabletable1(xmvarchar(8));
SQL>insertintotable1values('weather');
SQL>insertintotable1values('wether');
SQL>insertintotable1values('gao');
SQL>selectxmfromtable1wheresoundex(xm)=soundex('weather');
XM
weather
wether
SUBSTR
语法:SUBSTR(string,a[,b])
功能:截取字符串,从第a个开始取b个字符,这个务必要注意,是字符。vachar2最长4000个字节,GBK编码中一个中文字符占2个字节,韩文字符占4个字节,如果string是date或者number的数据类型,会自动转化为varchar2。
SQL>selectsubstr('13088888888',3,8)截取字符串fromdual;
截取字符串
08888888
selectSUBSTR(t.a,4),afromtemp_liutt;
JAN-0004-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.
SelectTRANSLATE('2abc2234','01234abcde','99999XXXXX')trafromdual
9XXX9999
selectreplace(TRANSLATE('as中国fd1234','1234567890','0000000000'),'0')fromdual;
查找字符串',01234,2342,2,'中逗号出现次数
selectlength(translate(',01234,2342,2,','a0123456789',''))fromdual;
判断字符串是否是数字
replace(translate(a,'0123456789','0'),'0')isnull
UPPER
语法:UPPER(string)
功能:所有字母大写.(不是字母的字符不变.如果string是CHAR数据类型的,那么结果也是CHAR类型的.如果string是VARCHAR2类型的,那么结果也是VARCHAR2类型的).
SQL>selectupper('AaBbCcDd')upperfromdual;
AABBCCDD
F.2字符函数——返回数字
(ascii,instr,instrb,length,lengthb,nls_sort)
ASCII
语法:ASCII(string)
功能:返回string字符串首字符的十进制表示ascii码值。CHR和ASCII是互为相反的函数.CHR得到给定字符编码的响应字符.ASCII得到给定字符的字符编码.
SQL>selectascii('A')A,ascii('a')a,ascii('0')zero,ascii('')spacefromdual;
AAZEROSPACE
65974832
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>selectinstr('oracletraning','ra',1,2)instringfromdual;
INSTRING
9
INSTRB
语法:INSTRB(string1,string2[a,[b]])
功能:和INSTR相同,只是操作的对参数字符使用的位置的是字节.
LENGTH
语法:LENGTH(string)
功能:返回字符串的长度,特别注意的,对于空的字段,返回为空,而不是0。
SELECTLENGTH('130')返回字符串长度FROMDUAL;
返回字符串长度
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>selectabs(100),abs(-100)fromdual;
ABS(100)ABS(-100)
100100
ACOS
语法:ACOS(x)
功能:返回x的反余弦值.输入x应该从-1到1之间的数,结果在0到pi之间,输出以弧度为单位.
SQL>selectacos(-1)fromdual;
ACOS(-1)
3.1415927
ASIN
语法:ASIN(x)
功能:返回x的反正弦值.X的范围应该是-1到1之间,返回的结果在-pi/2到pi/2之间,以弧度为单位.
SQL>selectasin(0.5)fromdual;
ASIN(0.5)
.52359878
ATAN
语法:ATAN(x)
功能:计算x的反正切值.返回值在-pi/2到pi/2之间,单位是弧度.
SQL>selectatan(1)fromdual;
ATAN(1)
.78539816
ATAN2
语法:ATAN2(x,y)
功能:返回x除以y的反正切值.结果在负的pi/2到正的pi/2之间,单位是弧度.
CEIL
语法:CEIL(x)
功能:计算大于或等于x的最小整数值.
SQL>selectceil(3.1415927)fromdual;
CEIL(3.1415927)
4
COS
语法:COS(x)
功能:返回x的余弦值.x的单位是弧度.
SQL>selectcos(-3.1415927)fromdual;
COS(-3.1415927)
-1
COSH
语法:COSH(x)
功能:计算x的双曲余弦值.
SQL>selectcosh(20)fromdual;
COSH(20)
242582598
EXP
语法:EXP(x)
功能:计算e的x次幂.e为自然对数,约等于2.71828.
SQL>selectexp(2),exp(1)fromdual;
EXP(2)EXP(1)
7.38905612.7182818
FLOOR
语法:FLOOR(x)
功能:返回小于等于x的最大整数值.
SQL>SELECTFLOOR(2345.67),FLOOR(-2345.67)FROMdual;
FLOOR(2345.67)FLOOR(-2345.67)
2345-2346
LN
语法:LN(x)
功能:返回x的自然对数.x必须是正数,并且大于0
SQL>selectln(1),ln(2),ln(2.7182818)fromdual;
LN(1)LN(2)LN(2.7182818)
0.69314718.99999999
LOG
语法:LOG(x,y)
功能:计算以x为底的y的对数.底必须大于0而且不等于1,y为任意正数.
SQL>selectlog(2,1),log(2,4)fromdual;
LOG(2,1)LOG(2,4)
02
MOD
语法:MOD(x,y)
功能:返回x除以y的余数.如果y是0,则返回x
SQL>selectmod(10,3),mod(3,3),mod(2,3)fromdual;
MOD(10,3)MOD(3,3)MOD(2,3)
102
POWER
语法:POWER(x,y)
功能:计算x的y次幂.
POWER返回n1的n2次方根
SQL>selectpower(2,10),power(3,3)fromdual;
POWER(2,10)POWER(3,3)
102427
ROUND
语法:ROUND(x[,y])
SELECTROUND(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
FROMDUAL;
SIGN
语法:SIGN(x)
功能:检测x的正负.如果x<0返回-1.如果x=0返回0.如果x>0返回1.
SQL>selectsign(123),sign(-100),sign(0)fromdual;
SIGN(123)SIGN(-100)SIGN(0)
1-10
常和decode结合使用
SIN
语法:SIN(x)
功能:计算x的正弦值.X是一个以弧度表示的角度.
SQL>selectsin(1.57079)fromdual;
SIN(1.57079)
1
SINH
语法:SINH(x)
功能:返回x的双曲正弦值.
SQL>selectsin(20),sinh(20)fromdual;
SIN(20)SINH(20)
.91294525242582598
SQRT
语法:SQRT(x)
功能:返回x的平方根.x必须是正数.
SQL>selectsqrt(64),sqrt(10)fromdual;
SQRT(64)SQRT(10)
83.1622777
TAN
语法:TAN(x)
功能:计算x的正切值,x是一个以弧度位单位的角度.
SQL>selecttan(20),tan(10)fromdual;
TAN(20)TAN(10)
2.2371609.64836083
TANH
语法:TANH(x)
功能:计算x的双曲正切值.
SQL>selecttanh(20),tan(20)fromdual;
TANH(20)TAN(20)
12.2371609
TRUNC
语法:TRUNC(x[,y])
功能:截取数字函数,只舍不入函数,y缺省值为0,x保留整数;y>0,x保留小数点右边y位;y<0,x保留小数点左边|y|位
SELECTTRUNC(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
SELECTTRUNC(SYSDATE,'DD'),--当天
TRUNC(SYSDATE,'MM'),--本月第一天
TRUNC(SYSDATE,'yyyy'),--本年第一天
TRUNC(SYSDATE,'day'),--本周第一天
TRUNC(SYSDATE,'q')--本季度第一天
(add_months,current_date,current_timestamp,dbtimezone,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)
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')fromdual;
TO_CHA
200002
SQL>selectto_char(add_months(to_date('199912','yyyymm'),-2),'yyyymm')fromdual;
199910
CURRENT_DATE
语法:CURRENT_DATE
selectCURRENT_DATEfromdual;
CURRENT_TIMESTAMP
语法:CURRENT_TIMESTAMP
selectCURRENT_TIMESTAMPfromdual;
DBTIMEZONE
语法:DBTIMEZONE
功能:返回数据库所在时区。
selectDBTIMEZONEfromdual;
EXTRACT
语法:EXTRACT(s)
Selectextract(yearfromsysdate)yearfromdual;
Yaer
2013
FROM_TZ
语法:FROM_TZ(s)
功能:9i新增函数,将特定时区的TIMESTAMP值转换为TIMESTAMPWITHTIMEZONE值。
Selectfrom_tz(timestamp‘2013-03-2808:00:00’,’3:00’);
LAST_DAY
语法:LAST_DAY(d)
功能:计算包含日期的d的月份最后一天的日期.这个函数可以用来计算当月中剩余天数.
返回日期的最后一天
SQL>selectto_char(sysdate,'yyyy.mm.dd')aafromdual;
aa
2004.05.09
SQL>selectlast_day(sysdate)fromdual;
LAST_DAY(S
31-5月-04
LOCALTIMESTAMP
语法:LOCALTIMESTAMP
SelectLOCALTIMESTAMPfromdual;
MONTHS_BETWEEN
语法:MONTHS_BETWEEN(date1,date2)
功能:计算date1和date2之间相差的月数.如果date1 SQL>selectmonths_between('19-12月-1999','19-3月-1999')mon_betweenfromdual; MON_BETWEEN SQL>selectmonths_between(to_date('2000.05.20','yyyy.mm.dd'),to_date('2005.05.20','yyyy.dd'))mon_betwfromdual; MON_BETW -60 NEW_TIME 语法:NEW_TIME(d,zone1,zone2) NEW_TIME(d,‘tz1’,‘tz2’) d::一个有效的日期型变量 tz1&tz2::下表中的任一时区 时区1时区2说明 SQL>selectto_char(sysdate,'yyyy.mm.ddhh24:mi:ss')bj_time,to_char(new_time 2(sysdate,'PDT','GMT'),'yyyy.mm.ddhh24:mi:ss')los_anglesfromdual; BJ_TIMELOS_ANGLES 2004.05.0911:05:322004.05.0918:05:32 NEXT_DAY 语法:NEXT_DAY(d,string) NEXT_DAY(date,'day') SQL>selectnext_day('18-5月-2001','星期五')next_dayfromdual; 25-5月-01 NUMTODSINTERNAL 语法:NUMTODSINTERNAL(n,char_expr) 功能:将数字n转换为INTERNALDAYTOSECOND格式,char_expr可以是DAY\HOUR\MINUTE或SECOND。 SelectNUMTODSINTERNAL(1000,’minute’)fromdual; NUMTOYMINTERNAL 语法:NUMTOYMINTERNAL(n,char_expr) 功能:将数字n转换为INTERVALYEARTOMONTH格式,char_expr可以是year或者month。 SelectNUMTOYMINTERNAL(100,’MONTH’)fromdual; 语法:ROUND(d[,format]) 功能:将日期d按照由format指定的格式进行四舍五入处理处理.如果没有给format则使用缺省设置`DD`. Selectround(sysdate,’MONTH’)fromdual; SYS_EXTRACT_UTC 语法:SYS_EXTRACT_UTC(date) SelectSYS_EXTRACT_UTC(systimestamp)fromdual; SYSDATE 语法:SYSDATE SQL>selectto_char(sysdate,'yyyy-mm-ddhh24:mi:ss')fromdual; SYSTIMESTAMP 语法:SYSTIMESTAMP Selectsystimestampfromdual; TO_DSINTERNAL 语法:TO_DSINTERNAL(char[,’nls_param’]) SelectTO_DSINTERNAL(’58:10:10’)fromdual; TO_TIMESTAMP 语法:TO_TIMESTAMP(char[fmt[,’nls_param’]]) selectsystimestampfromdual 1.字符型转成timestamp SelectTO_TIMESTAMP(’01-1月-03’)fromdual; selectto_timestamp('01-10月-0807.46.41.000000000上午','dd-MON-yyhh:mi:ss.ffAM') fromdual; 2.timestamp转成date型 selectcast(TO_TIMESTAMP('2015-10-0121:11:11.328','yyyy-mm-ddhh24:mi:ss.ff')asdate) 3.date型转成timestamp selectcast(sysdateastimestamp)date_to_timestamp TO_TIMESTAMP_TZ 语法:TO_TIMESTAMP_TZ(char[fmt[,’nls_param’]]) SelectTO_TIMESTAMP_TZ(’20130101’,’yyyymmdd’)fromdual; TO_YMINTERNAL 语法:TO_YMINTERNAL(char) selectTO_TIMESTAMP('2015-10-0121:11:11.328','yyyy-mm-ddhh24:mi:ss.ff')- TO_TIMESTAMP('2015-10-0111:11:11.328','yyyy-mm-ddhh24:mi:ss.ff') 语法:TRUNC(d,format) 使用位置:过程性语言和SQL语句。如果fmt='mi'表示保留分,截断秒,如此类推。 SQL>selectto_char(trunc(sysdate,'hh'),'yyyy.mm.ddhh24:mi:ss')hh, 2to_char(trunc(sysdate,'mi'),'yyyy.mm.ddhh24:mi:ss')hhmmfromdual; HHHHMM 2004.05.0911:00:002004.05.0911:17:00 TZ_OFFSET 语法:TO_OFFSET(time_zone_name||sessiontimezone||dbtimezone) 功能:9i新增函数,返回特定时区与UTC相比的时区偏移。 SelectTO_OFFSET(’EST’)fromdual; 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字符串。 SelectASCIISTR(’中国’)中fromdual; 中 \4E2D\56FD BIN_TO_NUM 语法:BIN_TO_NUM(expr[,expr]…) 功能:9i新增函数,用于将位向量值转变为实际的数字值。 SelectBIN_TO_NUM(1,0,1,1,1)中fromdual; 23 CAST 语法:CAST(exprAStype_name) 功能:用于将一个内置数据类型或集合类型转变为另一个内置数据类型或集合类型。可以作用于长度为0的空字段视图建表格之用。 Selectcast(SYSDATEASVARCHAR2)中fromdual; Createtabletb_dualnologgingasSelectcast(nullasvarchar2(1))fromdual; CHARTOROWID 语法:CHARTOROWID(string) 功能:将字符数据类型转换为ROWID类型,把包含外部格式的ROWID的CHAR或VARCHAR2数值转换为内部的二进制格式.参数string必须是包含外部格式的ROWID的18字符的字符串.oracle7和oracle8中的外部格式是不同的.CHARTOROWID是ROWIDTOCHAR的反函数. SQL>selectrowid,rowidtochar(rowid),enamefromscott.emp; ROWIDROWIDTOCHAR(ROWID)ENAME AAAAfKAACAAAAEqAAAAAAAfKAACAAAAEqAAASMITH AAAAfKAACAAAAEqAABAAAAfKAACAAAAEqAABALLEN AAAAfKAACAAAAEqAACAAAAfKAACAAAAEqAACWARD AAAAfKAACAAAAEqAADAAAAfKAACAAAAEqAADJONES COMPOSE 语法:COMPOSE(string) 功能:9i新增函数,用于将输入字符串转变为UNICODE字符串值。 SelectCOMPOSE(‘o’||unistr(‘\0308’))中fromdual; CONVERT 语法:CONVERT(string,dest_set[,source_set]) 功能:将字符串string从source_set所表示的字符集转换为由dest_set所表示的字符集.如果source_set没有被指定,它缺省的被设置为数据库的字符集. SQL>selectconvert('中国','US7ASCII','WE8ISO8859P1')"conversion"fromdual; DECOMPOSE 语法:DECOMPOSE(string) 功能:9i新增函数,用于分解字符串并返回相应的UNICODE字符串。 SelectCOMPOSE(‘chateoux’)中fromdual; HEXTORAW 语法:HEXTORAW(string) 功能:将string一个十六进制构成的字符串转换为二进制RAW数值.String中的每两个字符表示了结果RAW中的一个字节..HEXTORAW和RAWTOHEX为相反的两个函数. SelectHEXTORAW(‘AB56’)中fromdual; INTERVAL 语法:INTERVAL'integer[-integer]'{YEAR|MONTH}[(precision)][TO{YEAR|MONTH}] INTERVAL'123-2'YEAR(3)TOMONTH 表示:123年2个月,"YEAR(3)"表示年的精度为3,可见"123"刚好为3为有效数值,如果该处YEAR(n),n<3就会出错,注意默认是2. INTERVAL'11:12:10.1234567'HOURTOSECOND 表示:小时,秒 结果:+0011:12:10.123457 INTERVAL'123'YEAR(3) 表示:123年0个月 INTERVAL'300'MONTH(3) 表示:300个月,注意该处MONTH的精度是3啊. INTERVAL'4'YEAR 表示:4年,同INTERVAL'4-0'YEARTOMONTH是一样的 INTERVAL'50'MONTH 表示:50个月,同INTERVAL'4-2'YEARTOMONTH是一样 INTERVAL'123'YEAR 表示:该处表示有错误,123精度是3了,但系统默认是2,所以该处应该写成INTERVAL'123'YEAR(3)或"3"改成大于3小于等于9的数值都可以的 INTERVAL'5-3'YEARTOMONTH+INTERVAL'20'MONTH= INTERVAL'6-11'YEARTOMONTH 表示:5年3个月+20个月=6年11个月 RAWTONHEX 语法:RAWTONHEX(rawvalue) 功能:9i新增函数,将RAW类数值rawvalue转换为一个相应的十六进制表示的字符串.rawvalue中的每个字节都被转换为一个双字节的字符串.RAWTOHEX和HEXTORAW是两个相反的函数. Selectrawtonhex(‘7D’)fromdual; ROWIDTOCHAR 语法:ROWIDTOCHAR(rowid) 功能:9i新增函数,将ROWID类型的数值rowid转换为varchar2的字符串表示,在oracle7和oracle8之间有些不一样的地方.ROWIDTOCHAR和CHARTOROWID是两个相反的函数. ROWIDTONCHAR 功能:9i新增函数,将ROWID类型的数值rowid转换为Nvarchar2的字符串表示,在oracle7和oracle8之间有些不一样的地方.ROWIDTOCHAR和CHARTOROWID是两个相反的函数. SCN_TO_TIMESTAMP 语法:SCN_TO_TIMESTAMP(number) SelectSCN_TO_TIMESTAMP(ora_rowscn)fromemp; TIMESTAMP_TO_SCN 语法:TIMESTAMP_TO_SCN(timestamp) SelectTIMESTAMP_TO_SCN(order_date)fromemp; TO_CHAR 语法1:TO_CHAR(character) 功能1:用于将NCHAR,NVARCHAR2,CLOB,NCLOB数据转变为数据库字符集数据,当用于NCHAR,NVARCHAR2,NCLOB时字符用单引号括起来,前面加上n。 Selectto_char(n’中国’)fromdual; 语法2:TO_CHAR(d[,format[,nlsparams]]) 功能2:将日期d转换为一个VARCHAR2类型的字符串.format指定日期格式,.如果没有给定format,使用的就是该会话的缺省日期格式.nlsparams指定NLS参数.nlsparams的格式是:“NLS_DATE_LANGUAGE” selectto_char(sysdate,'yyyy/mm/ddhh24:mi:ss')fromdual; 2004/05/0921: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表示了货币的符号.例如,在美国小数点分隔符通常是一个句点(.),分组分隔符通常是一个逗号(,),而千分位符号通常是一个$. SELECTTO_CHAR(TO_DATE('11-oct-2007'),'fmDdthsp"of"Month,Year')FROMDUAL; 以上正确,需要注意的是不属于转换日期格式标识符需要使用双引号,如上面的"of" SELECTpromo_name,TRIM(TO_CHAR(promo_end_date,'Day'))||','|| TRIM(TO_CHAR(promo_end_date,'Month'))||''|| TRIM(TO_CHAR(promo_end_date,'DD,YYYY'))ASlast_day FROMpromotions; 等价于下面,fm有trim的作用去掉多余空格 SELECTpromo_name,TO_CHAR(promo_end_date,'fmDay')||','|| TO_CHAR(promo_end_date,'fmMonth')||''|| TO_CHAR(promo_end_date,'fmDD,YYYY')ASlast_day 上述当中,Day\DAY\day等等转换后都是带空格的,而YYYY则不会。 --将number格式转换为货币格式,前面均带空格 selectTO_CHAR(12345,'$99999D99')fromdual;--$12345.00 SELECTTO_CHAR(1890.55,'$00G000D00')FROMDUAL;--$01,890.55 SELECTTO_CHAR(1890.55,'$99G999D99')FROMDUAL;--$1,890.55 TO_CLOB 语法:TO_CLOB(char) 功能:9i新增函数,将字符串转变为CLOB类型。Char参数使用NCHAR,NVARCHAR2,NCLOB类型,字符串需要单引号括起来,且在前面加上n. SelectTO_CLOB(n’中国’)fromdual; TO_DATE 语法:TO_DATE(String[,format[,nlsparams]]) 功能:将符合特定日期格式的字符串转变为date类型.format是一个日期格式字符串.当不指定format的时候,使用该会话的缺省日期格式,需要特别注意的,缺省格式并不适用'2015-03-03'这种形式。 Selectto_date(‘20130101’,’yyyymmdd’)fromdual;--正确 SELECTTO_DATE('01/JANUARY/2007')FROMDUAL;--正确,缺省支持 SELECTTO_DATE('01-JANUARY-2007')FROMDUAL;--正确,缺省支持 SELECTTO_DATE('2015-03-03')FROMDUAL;--错误,缺省不支持 TO_LOB 语法:TO_LOB(long_column) 功能:9i新增函数,将LONG或LONGROW列的数据转变为相应的LOB类型。但需要注意的是,在单纯的select语句中会报错,如例子所示。 例子:to_lob转化long selectVIEW_NAME,to_lob(text)textfromuser_views;--会报错 createtabletemp_liutaonologgingasselectVIEW_NAME,to_lob(text)textfromuser_views--通过 TO_LABEL 语法:TO_LABEL(String[,format]) 功能:将String转换为一个MLSLABEL类型的变量.String可以是VARCHAR2或者CHAR类型的参数.如果指定了format,那么它就会被用在转换中.如果没有指定format,那么使用缺省的转换格式. TO_MULTI_BYTE 语法:TO_MULTI_BYTE(String) 功能:计算所有单字节字符都替位换位等价的多字节字符的String.该函数只有当数据库字符集同时包含多字节和单字节的字符的时候有效.否则,String不会进行任何处理.TO_MULTI_BYTE和TO_SINGLE_BYTE是相反的两个函数. SQL>selectto_multi_byte('高')fromdual; TO 高 TO_NCHAR 语法1:TO_NCHAR(char) 功能1:将字符串由数据库字符集转变为民族字符集。 SQL>selectTO_NCHAR('高')fromdual; 语法2:TO_NCHAR(date,[,fmt[,nls_param]]) SQL>selectTO_NCHAR(sysdate)fromdual; 语法3:TO_NCHAR(number) 功能3:将数字值转变为民族字符集。 SQL>selectTO_NCHAR(10)fromdual; TO_NUMBER 语法:TO_NUMBER(String[,format[,nlsparams]]) 功能:将CHAR或者VARCHAR2类型的String转换为一个NUMBER类型的数值.如果指定了format,那么String应该遵循相应的数字格式.Nlsparams的行为方式和TO_CHAR中的完全相同.TO_NUMBER和TO_CHAR是两个相反的函数. SQL>selectto_number('1999')yearfromdual; YEAR 1999 TO_SINGLE_BYTE 语法:TO_SINGLE_BYTE(String) 功能:计算String中所有多字节字符都替换为等价的单字节字符.该函数只有当数据库字符集同时包含多字节和单字节的字符的时候有效.否则,String不会进行任何处理. TO_MULTI_BYTE和TO_SINGLE_BYTE是相反的两个函数. SelectTO_SINGLE_BYTE(‘abc’)fromdual; TRANSLATE…USING 语法:TRANSLATE(str1USINGzfj) 功能:将字符串转变为数据库字符集(char_cs)或民族字符集(nchar_cs) SelectTRANSLATE(‘中国’usingnchar_cs)fromdual; UNISTR 语法:UNISTR(str1) 功能:9i新增函数,输入字符串返回相应的UNICODE字符 SelectUNISTR(‘\00D6’)fromdual; 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语句选择列表、orderby子句和having子句中。注意分组函数不能直接在plsql中引用,只能在内嵌select语句中使用。 AVG 语法:AVG([DISTINCT|ALL]col) 功能:返回一列数据的平均值,缺省使用是ALL修饰符,all表示对所有的值求平均值,distinct排重后再求平均值 使用位置:查询列表和GROUPBY子句. SQL>selectavg(distinctsal)fromgao.table3; AVG(DISTINCTSAL) 3333.33 SQL>selectavg(allsal)fromgao.table3; AVG(ALLSAL) 2592.59 CORR 语法:CORR([expr1,expr2) SQL>selectcorr(list_,min_)fromgao.table3; COUNT 语法:COUNT(*|[DISTINCT|ALL]col) Selectcount(distinctsal)fromemp; COVAR_POP 语法:COVAR_POP(expr1,expr2) 功能:返回成对数字的协方差,其数值使用表达式”(sum(expr1*expr2)-sum(expr1)*sum(expr2)/n)/n” SelectCOVAR_POP(column1,column2)fromemp; COVAR_SAMP 语法:COVAR_SAMP(expr1,expr2) 功能:返回成对数字的协方差,其数值使用表达式”(sum(expr1*expr2)-sum(expr1)*sum(expr2)/n)/n-1” SelectCOVAR_SAMP(column1,column2)fromemp; CUME_DIST 语法:CUME_DIST(expr1,expr2…)withingroup(orderbyexpr1,expr2…) 功能:返回特定数值在一组行数据中的累积分布比例。 SelectCUME_DIST(2000)withingroup(orderbysel)fromemp; DENSE_RANK 语法:DENSE_RANK(expr1,expr2…)withingroup(orderbyexpr1,expr2…) 功能:返回特定数据在一组行数据中的等级。 SelectDENSE_RANK(5000)withingroup(orderbysel)fromemp; FIRST 语法:FIRST 功能:9i新增,不能单独使用,必须与其他分组函数结合使用。通过使用该函数,可以取得排序等级的第一级,然后然后使用分组函数汇总该等级的数据。 Selectmin(sal)keep(dense_rankfirstorderbycommdesc)fromemp; GROUP_ID 语法:GROUP_ID 功能:9i新增,用于区分分组结果中的重复行。 Selectdeptno,job,avg(sal),group_id()fromempgroupbydeptno,rollup(deptno,job); GROUPING 语法:GROUPING(expr) 功能:用于确定统计结果是否使用了特定的表达式,返回0则用到了表达式,1则未用。 例如:selectcorp_code,org_level,count(1), grouping(corp_code), grouping(org_level) fromtb_sys_organization groupbyrollup(corp_code,org_level); selectcasegrouping(corp_code) when1then'all_corp'elsecorp_codeendcorp_code, casegrouping(org_level) when1then'all_org'elseorg_levelendorg_level, count(1) GROUPING_ID 语法:GROUPING_ID(expr1[,expr2]…) 功能:9i新增,用于返回对应于特定行的grouping位向量的值。 Selectdeptno,job,sum(sal),grouping_id(job,deptno)fromempgroupbyrollup(deptno,jon) GLB 语法:GLB([DISTINCT|ALL]label) 功能:获得由label界定的最大下界.函数仅用于trustedoracle. 使用位置:trusted数据库的选择列表和GROUPBY子句. LAST 语法:LAST 功能:9i新增,不能单独使用,必须与其他分组函数结合使用。通过使用该函数,可以取得排序等级的最后一级,然后使用分组函数汇总该等级的数据。 Selectmin(sal)keep(dense_ranklastorderbycomm)fromemp; LISTAGG 语法:listagg 功能:列转行 selectlistagg(o.rybs,';')withingroup(orderbyo.rybs) fromgk_xszrro whererownum<=100; ---------------------------------------------------- LUB 语法:LUB([DISTINCT|ALL]label) 功能:获得由label界定的最小上界.用于trustedoracle.数据库. 使用位置:trusted数据库的选择列表和GROUPBY子句.过程性语言和SQL语句。 MAX 语法:MAX([DISTINCT|ALL]col) 功能:获得选择列表或表达式的最大值,ALL表示对所有的值求最大值,DISTINCT表示对不同的值求最大值,相同的只取一次 使用位置:仅用于查询选择和GROUPBY子句. SQL>selectmax(distinctsal)fromscott.emp; MAX(DISTINCTSAL) 5000 MIN 语法:MIN([DISTINCT|ALL]col) 功能:获得选择列表或表达式的最小值,ALL表示对所有的值求最小值,DISTINCT表示对不同的值求最小值,相同的只取一次 SQL>selectmin(allsal)fromgao.table3; MIN(ALLSAL) 1111.11 PERCENT_RANK 语法:PERCENT_RANK(expr1,expr2…)WITHINGROUP(ORDERBYexpr1,expr2…) 功能:该函数用于返回特定数值在统计级别中所占的比例。 SQL>selectpercent_rank(3000)withingroup(orderbysal)fromemp; PERCENTILE_CONT 语法:PERCENTILE_CONT(percent_expr)WITHINGROUP(ORDERBYexpr) 功能:9i新增,用于返回在统计级别中处于某个百分点的特定数值(按照连续分布模型确定)。 SQL>selectpercentile_cont(.6)withingroup(orderbysal)fromemp; PERCENTILE_DISC 语法:PERCENTILE_DISC(percent_expr)WITHINGROUP(ORDERBYexpr) 功能:9i新增,用于返回在统计级别中处于某个百分点的特定数值(按照离散分布模型确定)。 RANK 语法:RANK(expr1,expr2…)WITHINGROUP(ORDERBYexpr1,expr2…) 功能:该函数用于返回特定数值中所占据的等级。 SQL>selectrank(3000)withingroup(orderbysal)fromemp; STDDEV 语法:STDDEV([DISTINCT|ALL]col) 功能:获得选择列表的标准差.标准差为方差(VARIANCE)的平方根,ALL表示对所有的值求标准差,DISTINCT表示只对不同的值求标准差. SQL>selectstddev(sal)fromscott.emp; STDDEV(SAL) 1182.5032 SQL>selectstddev(distinctsal)fromscott.emp; STDDEV(DISTINCTSAL) 1229.951 STDDEV_POP 语法:STDDEV_POP(col) 功能:返回统计标准差,其数值是统计方差的平方根. SQL>selectstddev_pop(sal)fromscott.emp; STDDEV_SAMP 语法:STDDEV_SAMP(col) 功能:返回采样标准差,其数值是采样方差的平方根. SQL>selectstddev_samp(sal)fromscott.emp; SUM 语法:SUM([DISTINCT|ALL]col) 功能:返回选择的数值和总和 Selectsum(sal)fromemp; VAR_POP 语法:VAR_POP([DISTINCT|ALL]col) 功能:返回统计方差.使用公式为(sum(expr*expr)-sum(expr)*sum(expr)/count(expr))/(count(expr) SQL>selectVAR_POP(sal)fromscott.emp; VAR_SAMP 语法:VAR_SAMP([col) 功能:返回采样方差.使用公式为(sum(expr*expr)-sum(expr)*sum(expr)/count(expr))/(count(expr-1) SQL>selectvariance(sal)fromscott.emp; VARIANCE 语法:VARIANCE([DISTINCT|ALL]col) 功能:返回选择列或表达式的采样方差.使用公式为(sum(expr*expr)-sum(expr)*sum(expr)/count(expr))/(count(expr-1) 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>selectproduct_id,CARDINALITY(ad_text)froma; COLLECT 语法:COLLECT(column) 功能:10g新增函数,用于根据输入列和被选中行建立嵌套表结果。 SQL>selectcast(COLLECT(ad_text)ast)froma;--t是嵌套表 POWERMULTISET 语法:POWERMULTISET(expr) 功能:10g新增函数,用于生成嵌套表的超集(包含所非空的嵌套表)。 SQL>selectcast(POWERMULTISET(ad_text)ast)froma;--t是嵌套表 POWERMULTISET_BY_CARDINALITY 语法:POWERMULTISET_BY_CARDINALITY(expr,cardinatility) 功能:10g新增函数,用于根据嵌套表和元素个数,生成嵌套表的超集(包含所非空的嵌套表)。 SQL>selectcast(POWERMULTISET_BY_CARDINALITY(ad_text)ast)froma;--t是嵌套表 SET 语法:SET(nested_table) 功能:改函数用于取消嵌套表中的重复结果,并生成新的嵌套表。 SQL>selectSET(nested_table)froma; F.8对象函数 (deref,make_ref,ref,reftohex,value) 说明:对象函数用于操纵REF对象。REF对象实际是指对象类型数据的指针。 DEREF 语法:DEREF(expr) 功能:该函数用于返回参照对象exp所引用的对象实例。 SQL>selectDEREF(address).cityfromtable_name; MAKE_REF 语法:MAKE_REF(object_table|object_view,key) 功能:该函数可以基于对象视图或对象表(存在基于主键的对象标识符)的一行数据建立REF。 SQL>selectMAKE_REF(oc_inventocies,3003)fromdual; REF 语法:REF(expr) 功能:该函数用于返回对象行所对应的REF值。 SQL>selectREF(e)fromtable_namee; REFTOHEX 语法:REFTOHEX(expr) 功能:该函数用于将REF值转变为十六进制字符串。 SQL>selectREFTOHEX(REF(e))fromtable_namee; VALUE 语法:VALUE(expr) 功能:该函数用于返回行对象所对应的对象实例数据,其中expr用于指定行对象的别名。 SQL>selectvalue(e).cityfromtable_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,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) SQL>insertintofile_tb1values(bfilename('lob_dir1','image1.gif')); COALESCE 语法:COALESCE(exp1,exp2,exp3,...) 功能:9i新增,依次查找各参数,遇到非NULL则返回,各参数或表达式数据类型必须一致,如果都为null则返回null。 SelectCOALESCE(v_e1,v_e2)froma; DECODE 语法:DECODE(base_expr,comparel,valuel,Compare2,value2,…default) 功能:把base_expr与后面的每个compare(n)进行比较,如果匹配返回相应的value(n).如果没有发生匹配,则返回default,每个valuel数据类型必须一致,如果没有default则返回null。 Selectdecode(a,’金’,1,’银’,2,0)fromtable_name; DEPTH 语法:DEPTH(n) 功能:9i新增,用于返回xml方案under_path路径所对应的相对层数,其中参数n用于指定相对层数。 Selectfath(1),depth(2)froma; 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的字节.缺省返回全部. 数据类型按照下面规定的内部数据类型的编码作为一个数字进行返回. 代码数据类型 1VARCHAR2 2NUMBER 8LONG 12DATE 23RAW 69ROWID 96CHAR 106MLSLABEL SQL>colglobal_namefora30 SQL>coldump_stringfora50 SQL>setlin200 SQL>selectglobal_name,dump(global_name,1017,8,5)dump_stringfromglobal_name; GLOBAL_NAMEDUMP_STRING ORACLE.WORLDTyp=1Len=12CharacterSet=ZHS16GBK:W,O,R,L,D EMPTY_CLOB/EMPTY_BLOB 语法:EMPTY_CLOB() EMPTY_BLOB() 功能:获得一个空的LOB提示符(locator).EMOTY_CLOB返回一个字符指示符,而EMPTY_BLOB返回一个二进制指示符,用来对大数据类型字段进行初始化操作的函数. 使用位置:过程性语言和SQL语句. SelectEMPTY_CLOB()fromdual; EXISTSNODE 语法:EXISTSNODE(XMLType_instance,Xpatgh_string) 功能:9i新增,用于确认xml节点路径是否存在,返回0表示不存在,1表示存在。. SelectEXISTSNODE(value(p),’/purchar/user’)fromp; 语法:EXTRACT(XMLType_instance,Xpatgh_string) 功能:9i新增,用于返回xml节点路径下的相应内容。. SelectEXTRACT(value(p),’/purchar/user’)fromp; EXTRACTVALUE 语法:EXTRACTVALUE(XMLType_instance,Xpatgh_string) 功能:9i新增,用于返回xml节点路径下的值。. SelectEXTRACTVALUE(value(p),’/purchar/user’)fromp; GREATEST 语法:GREATEST(expr1[,expr2]…) 功能:计算参数中最大的表达式.所有表达式的比较类型以expr1为准,比较字符的编码大小。 SQL>selectgreatest('AA','AB','AC')fromdual; GR AC SQL>selectgreatest('啊','安','天')fromdual; 安 GREATEST_LB 语法:GREATEST_LB(label1[,label2]…) 功能:返回标签(label)列表中最大的下界.每个标签必须拥有数据类型MLSLABEL、RAWMLSLABEL或者是一个表因字符串文字.函数只能用于truestedoracle库. LEAST 语法:LEAST(expr1[,expr2]…) 功能:计算参数中最小的表达式.所有表达式的比较类型以expr1为准,比较字符的编码大小。 SQL>selectleast('啊','安','天')fromdual; LE 啊 LEAST_UB 语法:LEAST_UB(label1[,label2]…) 功能:与GREATEST_UB函数相似,本函数返回标签列表的最小上界. NLS_CHARSET_DECL_LEN 语法:NLS_CHARSET_DECL_LEN(byte_count,charset_id) 功能:该函数用于返回字节数在特定字符集中占有的字符个数。 selectNLS_CHARSET_DECL_LEN(200,nls_charset_id(‘zhs16gbkf1xed’))fromdual; NLS_CHARSET_ID 语法:NLS_CHARSET_ID(text) 功能:该函数用于返回字符集的ID号。 selectNLS_CHARSET_ID(‘zhs16gbkf1xed’)fromdual; NLS_CHARSET_NAME 语法:NLS_CHARSET_NAME(number) 功能:该函数用于返回字符集ID号所对应的字符集名。 selectNLS_CHARSET_NAME(852)fromdual; NULLIF 语法:NULLIF(expr1,expr2)->相等返回NULL,不等返回expr1 功能:9i新增,用于比较表达式expr1和expr2,相等返回null,否则返回expr1. Selectnullif(expr1,expr2)fromtable_name; NVL 语法:NVL(expr1,expr2) 功能:用于将NULL转变为实际值,如果expr1是NULL,那么返回expr2,否则返回expr1,expr1、expr2两者必须为同类型或expr2可以隐式转换为expr1,否则会报错。 Selectnvl(column_name,0)fromtbale_name; 特别的date可以隐式转换为number,所以下面正确 SELECTNVL(to_date('2017-01-01','yyyy-mm-dd')-sysdate,SYSDATE) FROMdual; NVL2 语法:NVL2(expr1,expr2,expr3) 功能:9i新增,expr1不为NULL,返回expr2;expr1为NULL,返回expr3。expr1可以是任意数据类型;expr2与expr3可以是除LONG外的任意数据类型,但需要类型一致或expr3可以隐式转换为expr2。 SELECTNVL2(to_date('01-jun-2016'),sysdate-to_date('01-jun-2016'),sysdate) OVER 语法:sun/count(*) over(partitionbyXXX orderbyXXX) 功能:此函数为分析函数,有别于本文介绍中的其他函数,更详细看本博客“分析函数”专题 使用位置:过程性语言和SQL语句 sum(sal)over(partitionbydeptnoorderbyename) COUNT(*) OVER( PARTITIONBYclass_id ORDERBYROWNUM ROWSBETWEENUNBOUNDEDPRECEDINGANDCURRENTROW) OVER(PARTITIONBYe.phone ORDERBYpp.sort,qs.user_idDESC,ROWNUM PATH 语法:PATH(correction_integer) 功能:9i新增,用于返回特定XML资源所对应的相对路径。 Selectpath(1),depth(2)fromtable_name; SYS_CONNECT_BY_PATH 语法:SYS_CONNECT_BY_PATH(column,char) 功能:9i新增(只适用于层次查询),用于返回从根到节点的列值路径。 Selectlpad(‘‘,2*level-1)||sys_connect_by_path(ename,’/’)fromtable_namestartwithename=’scott’connectbypriorempno=mgr; SYS_CONTEXT 语法:sys_coniext(‘context’,’attribute’) 功能:该函数用于返回应用上下文的特定属性值,获得系统信息,其中context为上下文名,而attribute为应用上下文名,此函数可以得到oracle主机及客户端的信息。 SELECTSYS_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_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 FROMDUAL SYS_DBURIGEN 语法:SYS_DBURIGEN(column) 功能:9i新增,根据列或属性生产类型为DBUriType的URL。 SelectSYS_DBURIGEN(ename)fromemp; SYS_GUID 语法:SYS_GUID() 功能:该函数用于生产类型为RAW的16字节的唯一标识符,每次调用该函数都会发生不同的RAW数据。 SelectSYS_GUID()fromemp; SYS_TYPEID 语法:SYS_TYPEID(object_type_value) 功能:该函数用于返回唯一的类型ID值。 Selectname,SYS_TYPEID(value(p))fromempp; SYS_XMLAGG 语法:SYS_XMLAGG(expr[,fmt]) 功能:9i新增,用户汇总所有XML文档,并生成一个XML文档。 SelectSYS_XMLAGG(sys_xmlgen(ename))fromempp; SYS_XMLGEN 语法:SYS_XMLGEN(expr[,fmt]) 功能:9i新增,根据数据库表的行和列生成一个XMLType实例。 Selectsys_xmlgen(ename)fromempp; UID 语法:UID 功能:获得当前数据库用的惟一标识,标识是一个整数. SQL>showuser USER为"GAO" SQL>selectusername,user_idfromdba_userswhereuser_id=uid; USERNAMEUSER_ID GAO25 UPDATEXML 语法:UPDATEXML(XMLType_instance,Xpath_string,value_expr) 功能:9i新增,用于更新特定XMLType实例相对应节点路径的内容。 Updatexmltablepsetp=updatexml(value(p),’/pruch/user/text()’,’scott’) USER 语法:USER 功能:取得当前oracle用户的名字,返回的结果是一个VARCHAR2型字符串. SQL>selectuserfromdual; GAO USERENV 语法:USERENV(option) 功能:根据参数option,取得一个有关当前会话信息的VARCHAR2数值. 返回当前用户环境的信息,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>selectuserenv('isdba')fromdual; USEREN FALSE SESSION返回会话标志 SQL>selectuserenv('sessionid')fromdual; USERENV('SESSIONID') 152 ENTRYID返回会话人口标志 SQL>selectuserenv('entryid')fromdual; USERENV('ENTRYID') 0 INSTANCE返回当前INSTANCE的标志 SQL>selectuserenv('instance')fromdual; USERENV('INSTANCE') LANGUAGE返回当前环境变量,包括语言、地区、字符集 SQL>selectuserenv('language')fromdual; USERENV('LANGUAGE') SIMPLIFIEDCHINESE_CHINA.ZHS16GBK LANG返回当前环境的语言的缩写 SQL>selectuserenv('lang')fromdual; USERENV('LANG') ZHS TERMINAL返回用户的终端或机器的OS标示符 SQL>selectuserenv('terminal')fromdual; USERENV('TERMINA CLIENT_INFO返回由包DBMS_APPLICATION_INFO所存储的用户会话信息(64字节) Selectuserenv(‘CLIENT_INFO’)fromdual; VSIZE 语法:VSIZE(value) 功能:获得value的内部表示的字节数.如果value是NULL,结果是NULL. 使用位置:SQL语句. SQL>selectvsize(user),userfromdual; VSIZE(USER)USER 6SYSTEM XMLAGG 语法:XMLAGG(XMLType_instance[orderbysort_list]) 功能:9i新增,用于汇总多个XML块,并生成XML文档。 Selectxmlagg(xmlelement(“employee”,ename||’’||sal))fromempwheredeptno=10; XMLCOLATTVAL 语法:XMLCOLATTVAL(value_expr1[,value_expr2]…) 功能:9i新增,用于生成XML块,并增加”column”作为属性名。 Selectxmlelement(“emp”,XMLCOLATTVAL(ename,sall))fromempwheredeptno=10; XMLCONCAT 语法:XMLCONCAT(XMLType_instance1[,XMLType_instance2]…) 功能:9i新增,用于连接多个XMLType实例,并生成一个新的XMLType实例。 SelectXMLCONCAT(xmlelement(‘ename’,ename),xmlelement(‘sal’,sal))fromempwheredeptno=10; XMLELEMENT 语法:XMLELEMENT(identifier[,xml_attribute_clause][,value_expr]) 功能:9i新增,用于返回XMLType实例,其中参数identifier指定元素名,参数xml_attribute_clause指定元素属性子句,参数value_expr指定元素值。 SelectXMLELEMENT(‘date’,sysdate)fromdual; SelectXMLELEMENT(“emp”,xmlattributes(empnoas“id”,ename))fromemp; XMLFOREST 语法:XMLPOREST(value_expr1[,value_expr2]…) 功能:9i新增,用于返回XML块。 Selectxmlelement(‘ename’,XMLPOREST[ename,sal])fromempwheredeptno=10; XMLSEQUENCE 语法:XMLSEQUENCE(xmltype_instance) 功能:9i新增,用于返回xmltype实例中顶级节点一下的varray元素。 SelectXMLSEQUENCE(extract(value(x),’/purorder/line/*’))fromemppwheredeptno=10; XMLTRANSFORM 语法:XMLTRANSFORM(xmltype_instance,xsl_ss) 功能:9i新增,用于将xmltype实例按照XSL样式进行转换,并生成新的xmltype实例。 SelectXMLTRANSFORM(w.warehouse_spec,x.coll).getclobvalfromwarehousew,xsl_tabxwherew.name=x.name;