oracle 函数

来源:互联网 发布:改进型clock置换算法 编辑:程序博客网 时间:2024/06/05 08:37

1.Nvl()函数 

格式为:
Nvl( string1, replace_with)
功能:如果string1为NULL,则Nvl函数返回replace_with的值,否则返回string1的值。
 
Nvl的扩展Nvl2
 
Oracle在Nvl函数的功能上扩展,提供了Nvl2函数。
Nvl2(E1, E2, E3)的功能为:如果E1为NULL,则函数返回E3,若E1不为null,则返回E2。

2.Decode()函数

select decode( x , 1 ,‘xis 1’, 2 ,‘xis 2’,‘others’)from dual

x等于1时,则返回‘xis 1’。 

x等于2时,则返回‘xis 2’。 

否则,返回others’。 

 

3.Rpad()函数

rpad函数从右边对字符串使用指定的字符进行填充   
rpad(string,padded_length,[pad_string])   
string 表示:被填充的字符串   
padded_length 表示:字符的长度,是返回的字符串的数量,如果这个数量比原字符串的长度要短,rpad函数将会把字符串截取成从左到右的n个字符;   
pad_string 是个可选参数,这个字符串是要粘贴到string的右边,如果这个参数未写,lpad函数将会在string的右边粘贴空格。   
例如:   
rpad('tech', 7); 将返回'tech '   
rpad('tech', 2); 将返回'te'   
rpad('tech', 8, '0'); 将返回'tech0000'   
rpad('tech on the net', 15, 'z'); 将返回 'tech on the net'   
rpad('tech on the net', 16, 'z'); 将返回 'tech on the netz'

4.Substr()函数 

oracle的substr函数的用法
取得字符串中指定起始位置和长度的字符串   substr( string, start_position, [ length ]
 )
substr('This is a test', 62)     would return 'is'
substr('This is a test', 6)     would return 'is a test'
substr('TechOnTheNet', -33)     would return 'Net'
substr('TechOnTheNet', -63)     would return 'The'

select substr('Thisisatest', -4, 2) value from dual    结果是   te

select substr('emros',-3,1) value from dual      结果是 r


5.Round()函数

语法为ROUND(number,num_digits)
其中Number是需要进行四舍五入的数字;Num_digits为指定的位数,按此位数进行四舍五入,如果 num_digits 大于 0,则四舍五入到指定的小数位,如果 num_digits 等于 0,则四舍五入到最接近的整数,如果 num_digits 小于 0,则在小数点左侧进行四舍五入。
例如:
ROUND(21.129,0) 将 21.129 四舍五入到一个整数结果为21。
ROUND(21.129,2) 将 21.129 四舍五入到两个小数位,结果为21.13。
ROUND(21.129,1) 将 21.129 四舍五入到一个小数位结果为21.1。
ROUND(-21.129,2) 将 -21.129 四舍五入到两小数位结果为-21.13。
ROUND(21.129, -1) 将 21.129 四舍五入到小数点左侧一位结果为20。

6.add_months()函数

语法:add_months(d,n)--时间点d再加上n个月
例子:
select add_months(sysdate,2) aa from dual;  加两个月
select to_char(add_months(to_date('201310','yyyymm'),1),'yyyyMM') from dual; 加一个月
select to_char(add_months(to_date('20131012','yyyymmdd'),1),'yyyyMMdd') from dual; 加两个月


7.RTrim()函数

Oracle数据库百分比格式化
SELECT RTrim(To_Char((1/3)*100,'FM99999999990.9999'),'.')||'%' FROM dual; 这样获得的是33.3333%
SELECT substr(RTrim(To_Char((1/3)*100,'FM99999999990.9999'),'.'),1,2) ||'%' FROM dual; 这样可以省略小数,得33%
SELECT RTrim(To_Char((round((1/3),2))*100,'FM99999999990.9999'),'.')||'%' FROM dual;与以上是同样效果,得33%.
第一种解决方法: 
  SELECT DECODE (TRUNC (1/100),0, REPLACE (1/100, '.', '0.'),TO_CHAR (1/100)) 
  FROM DUAL; 
  大家只要在1/100的地方替换成自己需要的百分数就可以了。 
  第二种解决方法: 
  SELECT RTrim(To_Char(1/100,'FM99999999990.9999'),'.') FROM dual; 
  替换方式和上面相同。 
  两种方式的详细比较: 
  第一种公式比较复杂,但可以处理通用的数值。 
  第二种看起来简单,不过格式化的值的位数一定要大于计算的位数才行。比如 SELECT RTrim(To_Char(200,'FM90.9999') ,'.') FROM dual; 显示的就是########,因为已经超过了格式化的范围。

原创粉丝点击