Oracle 的函数

Posted 随风而去

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle 的函数相关的知识,希望对你有一定的参考价值。

Oracle 的函数

分类

      

 单行函数:  对每一行输入值进行计算,得到相应的计算结果,返回给用户,也就是说,

               每一行作为一个输入参数,通过函数计算得到每行的计算结果。比如说length

 多行函数:对多行输入值进行计算,得到多行对应的多个结果,比如max,min等

单行函数

 

字符函数:

 

 用于处理字符的业务

 

  replace(char 1,search_string,replace_string)

举例:

在emp表中的ename列中替换所有的A

 

select replace(ename,’A’,’替换后的A’) from emp;

 instr( C1,C2,I,J)

      C1  被搜索的字符串

      C2  希望搜索的字符串

      I    搜索开始的位置

      J    出现的位置,默认为1

 

      举例:

       select instr(‘Oracle index string function’,’s’,1,2) from dual;

 

 

 

ascii(‘要转换的字符’)  返回与指定的字符对应的十进制数

案例:

select ascii(\'A\') A,ascii(\'a\') as a,ascii(\'0\') as zero,ascii(\' \') as space from dual;

 

 chr(int)  给出整数,返回对应的字符

      案例:

      select chr(54740) as zh,chr(65) as c6 from dual;

 

  concat   连接字符串

     案例:

     select concat(ename,\' 是好人\') from emp;

     等效:

     select ename || ‘是好人’ from emp;

 

  initcap  字符转换首字母大写

案例:

select initcap(\'abc\') from dual;

 

   length   计算字符串长度 ,不区分中英文

   案例:

   找出emp表中字符是4的员工

   select * from emp where length(ename) = 4;

lower和upper函数   全部变小写 / 全部变大写

综合:

把员工的名字首字母小写,其他字母大写?

select concat(lower(substr(ename,1,1)),upper(substr(ename,2,length(ename)-1))) from emp;

 

lpad 和 rpad   左填充/右填充

案例:

select lpad(‘  测试’,14,’左填左填’) from dual;

 

ltrim 和 rtrim   坐裁剪/右裁剪

案例:

select  rtrim(\'right trim oooooooo\',\'o\') from dual;

 

-------------------------------------------------------

裁剪全部o

 

trim   裁剪指定字符,仅支持单字符

select trim(\'t\' from \'the is a trim\') from dual;

 

数字函数:

ceil函数   用于向上取整

select ceil(3.1415926) from dual;

 

floor 用于向下取整

 

  mod(m,n)  取模,如果n是0,返回m

 

round函数,用于四舍五入

 

trunk函数,用于截取一个整数

  

add_months (日期值,增加||减少的月份)

显示最近三个月入职的员工

 

-------------------------------------------

sysdate :  显示当前日期

last_day   显示当月最后一天

 

next_day   显示最近指定的日期

 

to_char(number) 转换指定数值格式

案例:

select to_char(sal,\'L999G999D99\') FROM emp;

 

9: 表示一个数字

L:表示本地货币样式

G: 分组分隔符(使用本地化)

D:表示逗号

 

根据deptno编号显示不同的信息

 

select decode(deptno,10,\'10号部门\',20,\'20号部门\',30,\'30号部门\') from emp;

 

 to_date(string,format);    --将字符串转换成日期

 

举例:

insert into emp(empno,hiredate) values(7777,to_date(\'2017-8-6\',\'yyyy-mm-dd\'));

说明:

to_char   是使日期转换成字符

to_date   是使字符转换成日期

 

系统函数:

功能:用于查询系统信息;

视频笔记:

 

小技巧

使用子查询完成行迁移

格式:   create table 表名 as select 列名1[ ,列名2 …]from 待复制表 [where]

 

使用子查询完成更新

 案例:

希望员工scott的岗位、工资、补助与smith员工一样

 

传统:update emp set job = (select job from emp where ename = ‘smith’),sal = (sele….),comm = (sele….) where enmae = ‘scott’;

快捷:update emp set (job,sal,comm) = (select job,sal,comm from emp where ename = ‘’smith) where ename = ‘scott’;

 

以上是关于Oracle 的函数的主要内容,如果未能解决你的问题,请参考以下文章

oracle累加分析函数

oracle错误:函数没有足够的参数

oracle分析函数问题

oracle 分析函数问题

oracle中的ceil函数和floor函数的区别

关于Oracle函数ROWTOHEX()的问题