(一)字符函数UpperSELECTUpper('abcde')FROMdual结果:ABCDELowerSELECTlower('ABCDE')FROMdual结果:abcdeInitcapSELECTInitcap('AAA')FROMdual结果:AaaSELECTInitcap('aaa')FROMdual结果:AaaConcatSELECTConcat('a','b')FROMdual结果:abSelect'a'||'b'fromdual结果:abSubstrSelectsubstr('abcde',0,3)fromdual结果:abcSelectsubstr('abcde',-2,3)fromdual结果:de第二个参数为字符串的第几位,默认从0开始。当为负数时,是从右侧开始。第三个参数为要取得字符串的总长度。LengthSelectlength('abcde')fromdual结果:5ReplaceSelectreplace('abcde','a','A')fromdual结果:AbcdeInstr返回指定一字符串在另一字符串中最先出现的位置。在字符串string1中,从start开始找string2,省略start时从string1头开始找。找不到时,函数值为0。INSTR(char1,char2,start,times):在char1字符串中搜索char2字符串,start为执行搜索的起始位置,times为搜索次数。InStr([start,]string1,string2[,compare])Selectinstr('HelloWorld','W')fromdual结果:8Selectinstr('HelloWorld','w')fromdual结果:0如果在第一个参数中存在第二个参数,则返回第一个遇到的匹配参数的位置,该方法区分大小写。Lpadselectlpad('Smith',10,'*')fromdual结果:*****SmithRpadselectrpad('Smith',10,'*')fromdual结果:Smith*****TrimTrim(string)参数string:string类型,指定要删除首部和尾部空格的字符串返回值String。函数执行成功时返回删除了string字符串首部和尾部空格的字符串,发生错误时返回空字符串()。如果任何参数的值为NULL,Trim()函数返回NULL。selecttrim('MrSmith')fromdual结果:MrSmithltrim()函数从字符串左侧删除空格或其他预定义字符。Rtrim()函数从字符串右侧删除空格或其他预定义字符。(二)数值函数Roundselectround(412,-2)fromdual;结果:400selectround(412.713)fromdual;结果:413selectround(412,2)fromdual;结果:412selectround(412.713,2)fromdual;结果:412.71取整运算,第二个参数指定了取小数点后的几位,如果是5则进一。ModselectMod(198,2)fromdual结果:0Truncselecttrunc(412.13,-2)fromdual结果:400selecttrunc(412.13,2)fromdual结果:412.13selecttrunc(412.13,1)fromdual结果:412.1selecttrunc(412.53)fromdual结果:412取整运算,第二个参数指定了取小数点后的几位,不进位。(三)日期函数Months_betweenselectmonths_between(sysdate+35,sysdate)fromdual结果:1.16129032258065用第一个参数的时间减去第二个参数的时间,得到月份的差。Add_monthsselectadd_months(sysdate,1)fromdual当前月份加了一个月intervalselectsysdate+interval'3'yearfromdual当前日期加了三年selectsysdate+interval'3-2'yeartomonthfromdual当前日期加了三年两个月selectsysdate+interval'102:10'daytominutefromdual当前日期加了十天两小时十分钟Next_dayselectnext_day(sysdate,'星期一')fromdual选择了下一个星期一的日期Last_dayselectlast_day(sysdate)fromdual选择了这个月的最后一天(四)转换函数To_charselectto_char(sysdate,'yyyy-MM-dd')fromdual;结果:2010-10-30To_numberselectto_number('13')+to_number('14')fromdual;结果:27To_dateTO_DATE格式(以时间:2007-11-0213:45:25为例)Year:yytwodigits两位年显示值:07yyythreedigits三位年显示值:007yyyyfourdigits四位年显示值:2007Month:mmnumber两位月显示值:11monabbreviated字符集表示显示值:11月,若是英文版,显示novmonthspelledout字符集表示显示值:11月,若是英文版,显示novemberDay:ddnumber当月第几天显示值:02dddnumber当年第几天显示值:02dyabbreviated当周第几天简写显示值:星期五,若是英文版,显示fridayspelledout当周第几天全写显示值:星期五,若是英文版,显示fridayddspthspelledout,ordinaltwelfthHour:hhtwodigits12小时进制显示值:01hh24twodigits24小时进制显示值:13Minute:mitwodigits60进制显示值:45Second:sstwodigits60进制显示值:25其它Qdigit季度显示值:4WWdigit当年第几周显示值:44Wdigit当月第几周显示值:124小时格式下时间范围为:0:00:00-23:59:59....12小时格式下时间范围为:1:00:00-12:59:59....Selectto_date('2012-1-1','yyyy-MM-dd')fromdual;结果:2012-1-1(五)通用函数NVLselectnvl('string',0)fromdual结果:stringselectnvl('',0)fromdual结果:0NullIFselectnullif('abc','abc')fromdual结果:空selectnullif('abc','abcd')fromdual结果:’abcNVL2selectnvl2('a','b','c')fromdual结果:bselectnvl2('','b','c')fromdual结果:c如果第一个参数不为空,则返回第二个参数;否则,返回第三个参数CoalesceselectCOALESCE('','','abc','')fromdual结果:abcselectCOALESCE('','','','')fromdual结果:空依次考察各个参数,如有非空则停止并返回该值。Case表达式selectcase4when10then'财务部'when20then'研发部'when30then'销售部'else'未知部门'end部门fromdual结果:未知部门Decode表达式selectdecode(10,10,'财务部',20,'研发部',30,'销售部','未知部门')部门fromdual;结果:财务部selectdecode(2,10,'财务部',decode(3,20,'研发部',decode(4,30,'销售部','未知部门')))fromdual;结果:未知部门第一个参数是否等于第二个参数,如果等于,则返回第三个参数,否则返回第四个参数,可用于行转列。(六)信号函数sign(x)或者Sign(x)叫做符号函数,在数学和计算机运算中,其功能是取某个数的符号(正或负):当x0,sign(x)=1;当x=0,sign(x)=-1;在通信中,sign(t)表示这样一种信号:当t0,sign(t)=1;当t=0,sign(t)=-1;即从t=0时刻开始,信号的幅度降为-1;