oracle中的函数(一)

来源:互联网 发布:开电话会议用什么软件 编辑:程序博客网 时间:2024/06/04 19:12

oracle中的函数
这些函数可以用在select where having  order by这些关键词后,
起着对某个常量或者某列数据进行相应的转化后在进行使用
例如
select ename,sal,round(sal,-2) from emp  where round(sal,-2)>=3000;
通过使用这些函数,可以帮助我们实现满足一些特殊要求的查询数学函数

 

数学函数

round:使用格式为  round(n[,m])其中[] 中的内容可以省略
select round(123.456),round(123.456,1),round(123.456,2),round(123.456,-1) from dual;
结果为
ROUND(123.456) ROUND(123.456,1) ROUND(123.456,2) ROUND(123.456,-1)
-------------- ---------------- ---------------- -----------------
           123            123.5           123.46               120

后面的参数指定了返回值的精度,或者说是从小数点第几位开始四舍五入,
如果不带后面的参数,则默认为四舍五入取整数,该例子中采用的是常量,
from后用的是dual,在上一篇文章中介绍了dual这个表,这个表只有一行数据,
上面的sql只有一行需要返回,返回的内容由select关键字决定,在实际应用中,参数可以是一个列名,例如
select round(sal,-2) ,ename from emp;

ceil:使用格式  ceil(n) 
select ceil(10.9),ceil(10.123) from dual;
结果为
CEIL(10.9) CEIL(10.123)
---------- ------------
        11           11
ceil函数的作用是将n的小数部分舍掉,整数部分加1

floor:格式floor(n)
select floor(10.9),floor(10.123) from dual;
结果为
FLOOR(10.9) FLOOR(10.123)
----------- -------------
         10            10
ceil不同的是该函数是将n的小数部分舍掉,整数部分不变。
在英文中ceil是天花板的意思,floor是地板的意思,
oracle的函数中,ceil"向上"取整数,而floor"向下"取整数,这应该跟英文意思多少有点关系吧

abs:格式abs(n)
select abs(-1),abs(0),abs(1) from dual;
结果为
   ABS(-1)     ABS(0)     ABS(1)
---------- ---------- ----------
         1          0          1
abs函数的作用是取得n的绝对值

sign:格式  sign(n)
select sign(0),sign(100),sign(-100) from dual;
结果是
   SIGN(0)  SIGN(100) SIGN(-100)
---------- ---------- ----------
         0          1         -1

sign函数的规则是n≥0sign(n)=1;n<0 sign(n)=-1

sqrt:格式sqrt(n)
select sqrt(4),sqrt(9.9) from dual;
结果是
   SQRT(4)  SQRT(9.9)
---------- ----------
         2 3.14642654

sqrt的作用是取得n的平方根

exp:格式exp(n)
select exp(0) ,exp(1) from dual;
结果是
    EXP(0)     EXP(1)
---------- ----------
         1 2.71828183
exp函数的作用是求en次幂的值

ln和log:格式ln(n)   log(m,n)
select ln(1),log(10,100) from dual;
结果是
     LN(1) LOG(10,100)
---------- -----------
         0           2
这两个函数中ln为自然对数,log(m,n)是以m为底求n的对数

power:格式  power(m,n)
select power(3,2),power(3,3) from dual;
结果是
POWER(3,2) POWER(3,3)
---------- ----------
         9         27

该函数的作用是求mn次幂

mod:格式mod(m,n)
select mod(10,6),mod(1,2) from dual;
结果是
 MOD(10,6)   MOD(1,2)
---------- ----------
         4          1
该函数的作用是m/n的余数

出了上面的函数oracle还提供了sin(n)  cos(n)  tan(n)
  asin(n)  acos(n)  atan(n)
sinh  cosh tanh这些三角函数,功能和数学中的一样,用法与上面所提到的方法基本一样


文本函数

oracle中的文本操作函数或者说是字符串操作函数如下
length(s)
ascii(s)
chr(n)
upper(s)
lower(s)
initcap(s)
ltrim(s[,k]
rtrim(s[,k])
trim([[option][c from ]]s)
lpad(s,n[,k])
rpad(s,n[,k])
substr(s,n[,m])
instr(s,k)
instr(s,k,n)
instr(s,k,n,m)
translate(s,v,m)
replace(s,v)
resplace(s,v,w)
concat(s1,s2)


length(s)
select ename ,length(ename) from emp;
该函数的作用是返回字符串参数s的长度

ascii(s)
select ename ,ascii(ename) from emp;
该函数的作用是返回字符串参数s的第一个字符对应的ascii码值
chr(n)
select chr(65),chr(97) from dual;
结果
C C
- -
A a
该函数的作用是返回在ascii码中参数n对应的字符

upper(s)lower(s)
select ename,upper(ename),lower(ename) from emp;
这两个函数的作用分别是将参数s全部转换成大写和小写字母

initcap(s)
select ename,initcap(ename) from emp;
该函数的作用是将参数s的第一个字符转换成大写

ltrim(s[,k]rtrim(s[,k])
select ename,ltrim(ename,'K'),rtrim(ename,'K') from emp;
ltri(s,k)的作用:首先取得参数s的第一个字符,判断是否为字符k,如果是则
k剪掉,再取第二个字符判断是否是k,如果是则剪掉继续判断,如果不是则结束判断
返回结果,如果不带参数k那么默认是去掉参数s左边的空格
rtrim(s[,k])是从参数s的右边开始判断

trim([[option][c from ]]s)  option=leading ,trailing,both
select
'  aabb  '  ,
trim('  aabb  '),
trim(both from '  aabb  '),
trim(leading from '  aabb  '),
trim(trailing from '  aabb  '),
trim(leading 'a' from 'aabbaa'),
trim(trailing 'a' from 'aabbaa'),
trim(both 'a' from 'aabbaa') from dual;
结果是
'AABB'   TRIM TRIM TRIM(L TRIM(T TRIM TRI TR
-------- ---- ---- ------ ------ ---- --- --
  aabb   aabb aabb aabb     aabb bbaa aab bb

trim(s)等价于trim(both from s)去掉两边的空格
trim(leading from s)去掉参数s前面的空格
trim(trailing from s)去掉参数s后面的空格
trim(leading 'a' from s)去掉参数s前面的a
trim(trailing 'a' from s)去掉参数s后面的a
trim(both 'a' from s)去掉参数s两边的a

lpad(s,n[,k])rpad(s,n[,k])
select ename,lpad(ename,10,'*'),lpad(ename,2),rpad(ename,10,'*'),rpad(ename,3) from emp;
lpad(s,n[,k])的作用是将字符串s的长度变成n,如果s长度小于n则在左边用参数k补充,如果s长度
大于n,则从左边截取n个字符返回
rpad(s,n[,k])的作用是与lpad类似,如果s长度小于n则在右边用参数k补充,如果s长度
大于n,则从右边截取n个字符返回


substr(s,n[,m])
select ename,substr(ename,2,3) from emp;
该函数的作用是从参数s的第n个字符开始截取,长度为m,如果不带参数m,默认截取到s的最后


instr(s,k)  instr(s,k,n)  instr(s,k,n,m)
select ename,instr(ename,'A'),instr(ename,'A',3),instr(ename,'A',4),instr(ename,'A',3,2) from emp;
instr(s,k)的作用是字符串或者字符ks中第一次出现的位置,
instr(s,k,n)的作用是从第n个位置开始,符串或者字符ks中第一次出现的位置
instr(s,k,n,m)的作用是从第n个位置开始,符串或者字符ks中第m次出现的位置

translate(s,v,m)
select ename,translate(ename,'A','B') from emp;
该函数的作用是用符串或者字符m替换符串或者字符n

replace(s,v)
select ename ,replace(ename,'AR'),replace(ename,'A')  from emp;
该函数的作用是移除字符串s中的符串或者字符v

replace(t,v,w)
select ename,replace(ename,'AR','aaaaaaa') from emp;
用字符串w替换字符串v

concat(s1,s2)
select ename,job,concat(ename,job),ename||job  from emp;
该函数的作用是连接两个字符串,作用相当于||

 

 

原创粉丝点击