《oracle实用函数快速学习》由会员分享,可在线阅读,更多相关《oracle实用函数快速学习(8页珍藏版)》请在金锄头文库上搜索。
1、Oracle实用函数快速学习字符函数:concat(x,y) 和 |操作符拼串的功能完全相同length(x) 返回串的长度, 汉字按1字符对待。示例:用例:length(好好学习,abc)结果:8lengthb(x) 返回串的长度, 汉字按2字符对待。示例:用例:lengthb(好好学习,abc)结果:12lower(x) 字符串变小写upper(x) 字符串变大写initcap(x) 字符串中每个单词的首字母变大写其它字母变小写lpad(x, width , pad_string) 在x串的左边填充空格或指定内容(pad_string),使得结果串达到width指定的字节数。rpad(x,
2、 width , pad_string) 在x串的右边填充空格或指定内容(pad_string),使得结果串达到width指定的字节数。ltrim(x ,trim_string) 在x串的左边截去多余的空格或指定内容(trim_string)rtrim(x ,trim_string) 在x串的右边截去多余的空格或指定内容(trim_string)trim(trim_char from x) 在x串的两边截去多余的空格或指定字符(trim_char)instr(x,find_string ,start, occurrence) 在x中查找find_string,并可指定开始查找的位置,如果源串中
3、有多次目标串出现,还可指定要返回第几次出现的位置。substr(string, m,n) 在string中从m位置按n长度截取子串,省略n则截取到尾。m 和 n 按字符理解,汉字算1字符。示例:用例:substr (This is a test,3 ,5)结果:is issubstrb(string, m,n) 在string中从m位置按n长度截取子串,省略n则截取到尾。m 和 n 按字节理解,汉字算2字符。replace (源串, 待换串 ,替换串) 在“源串”中查找“待换串”然后用“替换串”替换之。示例:用例:replace (This is a test, is , may be )结果
4、:this may be a testascii(x) 获得字符x的ASCII码chr(x) 获得ASCII码为x的字符translate(str, if, then) 翻译函数,把str中的字符按if-then字符映射进行替换。示例:用例:select translate(7671235,234567890,BCDEFGHIJ) k from dual;结果:GFG1BCEsoundex(str) 返回单词读音编码,用于where子句中筛选发音相似的单词。(不支持汉字, 将返回null) 示例: sql select a.姓名,a.job from scott.emp a, scott.em
5、p b where soundex(a.姓名) = soundex(b.姓名) and a.姓名 b.姓名;姓名 JOB- -JAMES CLERKJONES MANAGER 基于NLS(national language support)值使用的串函数: nls_initcap,nls_lower,nls_upper,nlssort 用于正则表达式的串函数: regexp_instr, regexp_replace, regexp_count, regexp_like, regexp_substr 日期函数:sysdate, current_date 返回系统当前日期时间值(Date类型)s
6、ystimestamp 返回系统当前日期时间值(Timestamp类型)add_months(x,y) 返回日期x加上y个月后的日期,如:2011-5-31 加1个月后得到2011-6-30。last_day(x) 返回日期x所包含月份的最后一天的日期next_day(x,day) 返回从日期x开始数,下一个“星期几”的日期。day的值为1-7(表示周日到周六),或“星期日”到“星期六”之间选择。months_between(x,y) 返回日期x和日期y之间相差几个月。x y 返回正数,否则返回负数。round(x ,unit) 对日期x四舍五入取整。默认情况下,x取整为最近的一天。 可以使用
7、的unit: Year(yyyy,yyy,yy,y,syyyy,syear)年,Month(Mon,MM)月,DD(ddd)日, Day(dy,d)星期, HH(hh12,hh24)时, MI分钟, Q季度等trunc(x ,unit) 对日期截断。默认情况下,x取整为当天。可以使用的unit同roundextract(partKey from datetime_value) 抽取日期时间值的某一部分,如从日期中选择月份和天。 partKey可用值: year, month, day, hour, minute, second, timezone_hour, timezone_minute,
8、timezone_region, timezone_abbr/只可以从一个date类型中截取 year,month,day;/只可以从一个timestamp类型中截取 year,month,day,hour,minute,second;/可以从一个 timestamp with time zone 的数据类型中截取TIMEZONE_HOUR和TIMEZONE_MINUTE;/获取两个日期之间的具体时间间隔,extract函数是最好的选择, 如下列:SQL select extract(day from dt2-dt1) day 2 ,extract(hour from dt2-dt1) hou
9、r 3 ,extract(minute from dt2-dt1) minute 4 ,extract(second from dt2-dt1) second 5 from ( 6 select to_timestamp(2011-02-04 15:07:00,yyyy-mm-dd hh24:mi:ss) dt1 7 ,to_timestamp(2011-05-17 19:08:46,yyyy-mm-dd hh24:mi:ss) dt2 8 from dual) 9 ; DAY HOUR MINUTE SECOND- - - - 102 4 1 46数值函数:abs(n) 求绝对值sign(n
10、) 返回-1,0,1分别表示n是正数,零,负数。round(n,m) 返回n的四舍五入结果,m是保留的小数位数。trunc(n,m) 返回n的直接截取结果,m是保留的小数位数。ceil(n) 返回n的上舍入取整结果。floor(n) 返回n的下舍入取整结果。mod(m,n) 返回m除以n的余数。power(m,n) 返回m的n次方。sqrt(n) 返回n的算术平方根, n必须是正数。sin,cos,log,exp,ln,转换函数:to_date(str|num ,format ,NLSparameters) 把串或数按指定格式转换成日期类型格式参数说明: 1. 不许普通文本内容,允许标点符号;
11、 2. 年、月、日、星期、小时、分钟、秒等的格式符: Year: y,yy,yyy,yyyy, Month: month,mon,mm 英文环境month采用月份的完整单词mon采用简写,中文环境下month和mon都采用n月的形式(n=1.12) Day: dd,ddd, Week: dy, day 英文环境下dy是星期的简写而day是星期的全写,中文环境下都是像星期三这样的形式 Hour:hh, hh24, hh12 Minute: mi Second: ss 其它: Q(季度), WW(当年第几周), W(当月第几周) 示例:SQL select to_date(11 2013-7月-2
12、7 星期一,hh12 yyyy-Month-dd day) from dual;ORA-01835: 周中的日与 Julian 日期发生冲突SQL select to_date(11 2013-7月-27 星期六,hh12 yyyy-Month-dd day) from dual;TO_DATE(112013-7月-27星期六,-2013/7/27 11:00:00 3. NLS参数说明:nls_date_language=America, 可用来设置格式语言环境为英文(默认语言环境为操作系统的语言), 亦可:nls_language=chinese.hzs16gbk用例:select to_
13、date(2013-july-27 saturday,yyyy-Month-dd day,nls_date_language=American) d from dual;结果:2013/7/27用例:select to_date(2013-7月-27 星期六,yyyy-Month-dd day) d from dual;结果:2013/7/27用例:select to_date(2013-7月-27 星期六,yyyy-Month-dd day,nls_date_language=simplified chinese) d from dual;结果:2013/7/27 to_char(date
14、, format ,NLSparameters) 把日期类型数据按指定格式转换成字符串形式, 格式参数同to_date。 示例:求某天是星期几 select to_char(to_date(2002-08-26,yyyy-mm-dd),day) from dual; 星期一 select to_char(to_date(2002-08-26,yyyy-mm-dd),day,NLS_DATE_LANGUAGE = American) from dual; monday可以先设置本次会话的日期语言,如下: alter session set nls_language=simplified chinese; /* american , . */