1.Nvl()函数
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', 6, 2) would return 'is'
substr('This is a test', 6) would return 'is a test'
substr('TechOnTheNet', -3, 3) would return 'Net'
substr('TechOnTheNet', -6, 3) 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()函数
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; 显示的就是########,因为已经超过了格式化的范围。