Oracle<单行函数的学习>

首先说一下:函数的目的:简化我们的操作,如果没有这些函数,我们势必要推理半天。 关于那么多函数最好的是阅读官方文档,但是我们英文水平及设计的内容局限性。只需了解一些常用的函数即可。  

Oracle函数特别多,函数可以没有参数,但是必须要有返回值。

以下是我关于单行函数的学习积累的知识: 

1.单行函数: 对单行进行操作,每行返回一个结果,函数可以嵌套。单行函数较为重要的六大类单行函数的分类字符,数值,通用,转换,日期,表达式

2. 字符函数:包括大小写转换与字符处理。 

          2-1:大小写转换包括:UPPER LOWER以及INITCAP (upper用来转为全大写,lower用来转换全小写,initcap用来转换驼峰式书写,即首字母大写)

                 例:SELECT upper('nihao') 大写,lower('Email') 小写,initcap('job_ss') 驼峰 FROM DUAL 

                                       运行结果:     

          2-2:字符处理包括: concat,substr,length,instr,lpad,rpad,replace,trim.下面一一介绍;

                  2-2-1:concat(连接两个值,相当于||)  

                  例:SELECT "CONCAT"('你', '好') 打招呼 FROM dual;       

                                         运行结果 :    

                   2-2-2:  substr(column|expression,n1,[n2])(返回第一个参数中,从第n1位开始,长度为n2的字符串。如果没有n2则返回从n1开始到最后,n1为负,则取反向值然后再执行右移几位)  

                   例:SELECT SUBSTR('dajiahao',3,5) FROM dual             结果: 

                         SELECT "SUBSTR"('abcde',-1 ,3 )FROM dual            结果: 

                         select substr('abcde',-6,6) from dual                      结果: 

                        由此总结可知:当第n1负值超过字符长度,则结果永远为空。

                  2-2-3: length:即字符的长度 

                       例:SELECT "LENGTH"('qshzhenshihaorena')FROM dual   结果: 

                  2-2-4 : instr(s1,s2,[n1],[n2])(返回s1中,子串s2从n1开始,第n2次出现的位置。n1n2默认为1) 

                         例: SELECT "INSTR"('hahatianxiataiping', 'a',4,2)FROM dual  结果: 可知所得结果是4之后的第几位,而不是总的位置

                  2-2-5 : lpad与rpad(s1,num,s2):用S2左右填充S1到num位    

                           例   SELECT LPAD('ss', 10,'a'),"RPAD"('ss', 10, 'a') FROM dual     结果               如果超过10个字节的数会截取! 

                  2-2-6: replace(s1,s2,s3);把s1中的s2换成s3 

                           例    SELECT  "REPLACE"('qishihaos', 's', 'w') FROM dual               结果  

                  2-2-7:trim()去除字符串头部或者尾部的字符 

                            例SELECT "TRIM"('s' from 'ssyyss') FROM dual                              结果                         去除的字符只能是一个单字节字符,汉语字符也行,而且去除的直到边上没有

  3  数值函数 :Round  TRUNC MOD

      round(column|expression,n)四舍五入到小数点后第几位     Trunc截取到小数点后几位      MoD取余

                            例  SELECT "ROUND"(2.23456, 2),"TRUNC"(2.2385, 4), "MOD"(40.4, 7)  FROM dual              结果

 4    日期函数 :oracle 默认日期形式是:DD-MON-RR  。日期加减数字,功能是在该日期上加减对应天数    sysdate:返回系统当前日期。

                       区别 RR与yy区别:

          常用日期函数:4.1-sysdate:返回系统的日期:    

                              例: SELECT SYSDATE  FROM dual                    结果:

                               4.2  months_between   两日期相隔月数 

                               例   SELECT "MONTHS_BETWEEN"(sysdate, '1-jan-2000') FROM dual   结果:  ----------------------- 结果这能为小数;

                               4-3  add_months (日期,num)       返回指定日期,加上数字月后的日期         

                               例    SELECT "ADD_MONTHS"(sysdate, 3) FROM dual                       结果;

                               4-4  next_day ;返回某一日期的下一个指定日期 

                               例 SELECT "NEXT_DAY"(SYSDATE, 'MON') n  FROM dual                    结果: 

                              4-5  last_day;  返回某一日期的的当月最后一天  

                                例  SELECT  "LAST_DAY"(SYSDATE) FROM dual                        结果        

                                4-6  round : 日期的四舍五入,此处注意,如按天四舍五入,周日是第一天,周三周四是分界点。

                                 SELECT  ROUND (SYSDATE,'mon') FROM dual                          结果  

                                4-7  trunc :日期的截取。  

                                  SELECT  trunc (SYSDATE,'day') FROM dual                          结果:

                                4-8 extract:返回日期中的年月日 

                                     SELECT  EXTRACT(month FROM sysdate) FROM dual                  结果;

                                      

       5.转换函数:  

                               5.1:隐式转换

:                                    

 

                      5.2:显示转换:

                                                                                       

                                    to_char(date,字符格式)           2017-03-01 pm 11:34:47  这一天是: wed      

                                     to_char(num,字符格式)           SELECT "TO_CHAR"(1223.45677,'9,999.99999')||'rmb' FROM dual          

                                     to_num  (字符,数字格式)                                 SELECT "TO_NUMBER"('123456' ) FROM dual        

                                          数字格式: 

 

 

                                     to_date    (字符,日期格式)                                 SELECT "TO_DATE"('2015-03-18', 'YY-MM-DD')FROM dual       

 

 6:通用函数:与空值相关的一些函数:NVL   NVL2    NULLIF    COALESCE

                  nvl(n1,n2) n1不是null就返回n1,否则返回n2       SELECT  "NVL"(null, 23) FROM dual      

                   nvl2(n1,n2,n3) n1不是null就返回n2,否则返回n3    SELECT  "NVL2"(NULL, 23, 25) FROM DUAL          

                   nullif(n1,n2) 如果两个表达式相等返回null,否则返回n1       SELECT "NULLIF"('tian', 'hha') FROM dual         

                 "COALESCE"(expr1, ... exprn)返回第一个不为空的参数

              

       

 7 表达式  case与decode 

            case语法: 

              

             decode: 

                    

 

 8       嵌套就不用举例了吧,多练才是王道啊。。

                                                               

                                                                                                                                   2017-03-02  00:02:44

 

:                           

 

 

posted @ 2017-03-02 00:04  sharkey  阅读(207)  评论(0)    收藏  举报