oracle函数总结

  1. 日期函数  
  2.   
  3. 1.ADD_MONTHS(date, n):用于从一个日期值增加或减少一些月份  
  4. 例子: add_months(sysdate,12) 增加一年 ,如果现在是201059日,运算后结果是201159日  
  5.    
  6. 2. MONTHS_BETWEEN(date1, date2):判断两个日期之间相差的月份  
  7. 例子: months_between('22-10月-09', sysdate)  
  8. 输出:-4.0934573  早四个多月  
  9.   
  10. 3. LAST_DAY(date):函数返回包含日期的月份的最后一天  
  11. 例子 : last_day('10-2月 -10') 返回 28-2月 -10    
  12.   
  13. 4. ROUND(date[,'fmt']):将日期d按照fmt指定的格式舍入,fmt为字符串  
  14. 今天是10224日  
  15. 例子: round(sysdate,'MONTH') 返回 01-3月 -10 就是根据日来四舍五入月  
  16. round(sysdate,'YEAR') 返回 01-1月 -10  根据月来四舍五入年  
  17.   
  18. 5. TRUNC(date[, 'fmt']):返回由fmt指定的单位的日期  
  19. 今天是10224日  
  20. 例子:  
  21. trunc(sysdate,'MONTH')  返回 01-2月 -10    
  22. trunc(sysdate,'YEAR')   返回 01-1月 -10     
  23.   
  24. 6. NEXT_DAY(date, 'char'):找到下一个星期几  
  25. 今天是10224日  
  26.   
  27. 例子:  
  28. next_day(sysdate,'星期五')  返回 26-2月 -10   
  29.   
  30. 7. extract(date_field from [datetime_value]):找出日期或间隔值的字段值---提取函数  
  31. 今天是10224日  
  32.   
  33. 例子: extract(month from sysdate)  返回 2  
  34. extract(year from sysdate)  返回 2010  
  35. extract(day from sysdate)  返回 24  
  36.   
  37. --------------------------------------------------------------------------  
  38.   
  39. 字符函数  
  40.   
  41. 1. initcap('hello') 首字母变大写  
  42. 返回 : Hello   
  43.   
  44. 2. lower('HOW ARE YOU') 返回  how are you     
  45.   
  46. 3. upper('hello world')  返回  HELLO WORLD    
  47.   
  48. 4. ltrim('xyzadams','xyz') 返回 adams   
  49. 'xyzadams' 字符串中左边的'xyz'字串去掉  
  50.   
  51. 5. rtrim('xyzadams','ams') 返回 xyzad  
  52.   
  53. 6.TRANSLATE(string,from_str,to_str):返回将(所有出现的)from_str中的每个字符替换为to_str中的相应字符以后的string   
  54. 例子:  
  55. translate('JACK and JUE''JU','BL')  
  56. 返回 'BACK and BLE'  
  57. 意思是把字符串中的字母J变成B ,把U变成L  
  58. translate('JACK and JUE''J','BL') 这个等效于   
  59. translate('JACK and JUE''J','B') 因为L没有对应的东西  
  60.   
  61.   
  62. 7. replace('JACK and JUE','J','BL')  
  63. 返回 BLACK and BLUE    
  64.   
  65. 8.instr('abcdeadab','a',2,2) 返回 8 意思是在'abcdeadab''a',从第二个位置开始找,找第二次出现的a  
  66.   
  67. instr-----indexString  
  68.   
  69. instr('abcdeadab','a') 返回 1 等效于 instr('abcdeadab','a',1,1)  
  70.   
  71. 9. substr('abcdefgh',2,4) 返回 bcde   
  72. 'abcdefgh'的第二个位置开始找,字串长度为4  
  73.   
  74. 10.concat('hello',' world') 返回 hello world   
  75.   
  76. 11.  chr(65) 返回 A     
  77.  相当于java中的 new Charater(65); 就是把65当做ascii转换成字符  
  78.   
  79. 12. ascii('a') 返回  97  
  80. 返回a的ascii  
  81.   
  82. 13.  lpad('abcde',10,'wt') 返回 wtwtwabcde   
  83. leftpadding 把'abcde'变成10个字符,左边用'wt'填充  
  84.   
  85. 14. rpad('abcde',10,'w') 返回 abcdewwwww  
  86.   
  87. 15.trim([leading/trailing/both][匹配字符串或数值][from][需要被处理的字符串或数值])  
  88. 例子:   
  89. trim(0 from 7600)  返回 76  
  90. 去掉两边的0  
  91. trim('中' from '中秋八月中') 返回 '秋八月'  
  92. trim(leading '半' from '半夜二更半') 返回 '夜二更半'  
  93.   
  94. 16. length('how are you') 返回 11  
  95.   
  96. 17. DECODE 条件语句   
  97. select empno,ename,job,sal,  
  98.   2  decode(job,'CLERK', sal*1.5,  
  99.   3             'SALESMAN', sal*2.0,  
  100.   4             'MANAGER',sal*3,  
  101.   5                       sal ) as "new salary"  
  102.   6  from emp;  
  103.   
  104. --------------------------------------------------------------------------------  
  105.   
  106. 数字函数  
  107. 1. abs(-12) 返回 12 求绝对值  
  108.   
  109. 2. ceil(44.778) 返回 45 ; 进位法保留整数,也就是整数总要+1  
  110.   
  111. 3. COS(x)函数,返回x的余弦值。x是以弧度表示的角度  
  112. 例子:   
  113. cos(180) 返回  -.59846007   
  114.   
  115. 4. COSH(x)函数,返回X的双曲余弦   
  116. cosh(0) 返回 1  
  117.   
  118. 5.  FLOOR(x)函数,用来返回小于或等于X的最大整数,不能对小数操作  
  119. floor(100.2) 返回100  返回整数,舍去小数  
  120.   
  121. 6.POWER(x,y)函数,返回X的Y次幂。底X和指数Y都不必是正整数,但如果X是负数的话,Y必须是整数       
  122. power(4,2) 返回 16   
  123.   
  124. 7.MOD(被除数,除数)求余函数,如果除数为0,则返回被除数  
  125. 例子:  
  126. mod(10,3)  返回 1  
  127.   
  128. 8. ROUND(x[,y])函数,返回舍入到小数点右边Y位的X值。Y缺省为0,这将X舍入为最接近的整数。如果Y是负数, 那么舍入到小数点左边相应的位上,Y必须为整数   
  129. 例子:  
  130. round(100.347,2) 返回 100.35  四舍五入,保留两个小数  
  131.   
  132. 9.TRUNC(x[,y])截取值函数,Y缺省为0,这样X被截取成一个整数。如果Y为负数,那么截取到小数点左边相应位置   
  133.   
  134.  trunc(100.347,2) 返回100.34  
  135. trunc(100.347,-2)  各位的位置是0,所以小数点后一位的位置是1,所以-2代表保留三个整数 所以返回 100  
  136.   
  137. 10. sqrt(4) 返回2  开根号  
  138.   
  139. 11.SIGN(x)函数,此函数用来返回一个数的正负值,若为一个正数则返回1,若为一个负数则返回-1,若为0则仍返回0,有点像把模拟量数字化的意思   
  140. 返回符号位  
  141. sign(-10) 返回-1  
  142. sign(5)  返回1  
  143. sign(0) 返回0   
  144.   
  145. -------------------------------------------------------------------------------  
  146.   
  147. 转换函数  
  148.   
  149. 1.  
  150.  to_char(sysdate, ' YYYY "年" fmMM "月" fmDD "日" HH24:MI:SS ')  
  151. 日期转字符串, 其中fm表示去掉前导0  
  152. 返回  
  153. 2010 年 2 月 24 日 22:46:56     
  154.   
  155. 把数字转换成字符: to_char(800,'C99999') 返回 'CNY800' 这个在钱币格式化时候很有用  
  156.   
  157. 2. to_number('100') 返回100   
  158.   
  159. 3. to_date   
  160.   
  161. ------------------------------------------------------------------------  
  162. 条件函数  
  163.   
  164. 1.NVL(exp1,exp2) :  如果exp1为null,则NVL返回exp2;反之返回exp1   
  165.    
  166. NVL(comm,0) 如果comm为null0代替  
  167.   
  168.   
  169. 2.NVL2(exp1,exp2,exp3) :如果exp1不是null,则返回exp2,如果是,则返回exp3   
  170.   
  171. NVL2(comm,sal+comm,sal) ---就不说了  
  172.   
  173.   
  174. -------------------------------------------------------------------------  
  175.   
  176. 分析函数   
  177.   
  178.   
  179. 1. select ename,job,deptno,sal, row_number() over (order by sal desc) as sal_rank from emp;  
  180.   
  181. ROW_NUMBER 返回连续的排位,不论值是否相等  
  182.   
  183. 2. select deptno,ename,sal,comm, rank() over(partition by deptno order by sal desc,comm) rank  from emp;  
  184.   
  185. RANK 具有相等值的行排位相同,序数随后跳跃  
  186.   
  187. 3.   
  188. SQL> select d.dname,e.ename,e.sal,dense_rank() over(partition by e.deptno order by e.sal desc)  
  189.   as denrank  
  190.   from emp e, dept d  
  191.   where e.deptno=d.deptno;  
  192.   
  193. DENSE_RANK 具有相等值的行排位相同,序号是连续的  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值