Oracle常用函数及分页

1、字符函数

   1.1、lower(列名|表达式)字符转小写

     select lower('AAA') from  dual;

   1.2、upper(列名|表达式)字符转大写

     select upper('aaa') from  dual;

   1.3、initcap(列名|表达式)将字符开头字母转大写其余转小写

     select initcap('aaAa') from  dual;

   1.4、concat(列名|表达式,列名|表达式)字符串连接函数

     select concat('aaa','bbb') from  dual;

   1.5、substr(列名|表达式,m,[n])字符串截取函数

     select substr('aa1133',0,3) from  dual;

   1.6、length(列名|表达式)获取字符串长度函数

     select length('aa1133') from  dual;

   1.7、instr(列名|表达式)查找字符的位置函数

     select instr('aa1133','1') from dual;

   1.8、trim([leading|trailing|both])从字符串中的头部和尾部去掉指定的字符

     select trim('?'from'??abc??') from dual;

   1.9、去掉空格

     select ltrim('   aaa  ') from dual;--去掉左空格

     select rtrim('   aaa  ') from dual;--去掉右空格

     select trim('   aaa  ') from dual;--去掉空格

   1.10、replace(列名|表达式,列名|表达式,列名|表达式)字符替换

     select replace('abc','b','@') from dual;

   1.11、translate字符转换函数

     select translate('abc','b','xx') from dual;

   1.12、lpad [左添充] rpad [右填充](用于控制输出格式)

     select lpad('func',6,'=') s1, rpad('func',6,'-') s2 from dual;

2、数学函数

   2.1、round(列名|表达式,n)四舍五入到小数点后的n位

   select round(198.89,1) from dual;  

   2.2、trunc(列名|表达式,n)截取到小数点后的n位

   select trunc(198.89,1) from dual;  

   2.3、mod(m,n)取余数

   select mod(8,3) from dual;

3、日期函数

   3.1、sysdate返回系统时间

   select sysdate from dual; 

   3.2、add_months(time,months)函数可以得到某一时间之前或之后n个月的时间

   select add_months(sysdate,-6) from dual;

   3.3、last_day(d):返回指定日期所在月份的最后一天

   select last_day(sysdate) from dual;

4、转换函数

   4.1、to_date(列名|表达式,m)字符转日期

   select to_date('2015-05-12 11:21:00','yyyy-mm-dd hh24:mi:ss') from dual;

   4.2、to_char(列名|表达式,m)日期转字符

   select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

   4.3、to_number(列名|表达式) 转换为数字类型 

   select to_number(to_char(sysdate,'hh12')) from dual;

5、其它

   5.1、decode[实现if ..then 逻辑]   注:第一个是表达式,最后一个是不满足任何一个条件的值

   select decode(u.status,'0','不可用','1','可用','其它') status from users u where rownum <=10;

   5.2、case when[实现switch ..case 逻辑]

   select (case when u.status = '0' then '不可用' 

               when u.status = '1' then '可用' 

               else '其它' 

               end) as  status from users u where rownum <=10;  

   5.3、nvl(列名|表达式,列名|表达式) 第一个值为空则返回第二个值,否则返回第一个值 

   select nvl(u.name,'请填写名字') from users u where rownum <=10;

   5.4、nvl2(列名|表达式,列名|表达式,列名|表达式) 如果第一个值不为空,显示第二个值,否则显示第三个值

   select nvl2(u.name,u.name,'请填写名字') from users u where rownum <=10;  

   5.5、nullif(列名|表达式,列名|表达式) 值相等返空,否则返回第一个值

   select nullif('2','1') as value1,nullif('1','1') as value2 from dual;          

   5.6、返回登录的用户名称 

   select user from dual;

   5.7、coalesce 返回列表中第一个非空表达式

   select coalesce(null,null,'1','2',null) from dual;

6、分页查询,需要引入一个rownum的函数

   6.1、使用rownum嵌套查询

   select * from ( select e.* , rownum as rn from emp e where rownum  <= 10 ) t where t.rn >= 1

 

   6.2、方法一的另一种写法

   select * from ( select e.* , rownum as rn from emp e) t where t.rn >= 1 and t.rn <=10;

 

   6.3、使用分析函数row_number

   select * from ( select t.* , row_number() over(order by ename) as rn from emp t ) where rn>=1 and rn<=10

 

   6.4、使用rowid

   select * from emp where rowid in ( select rid from (select rowid as rid, rownum as id from emp t where rownum < 15) where id >= 10 );

 

   6.5、使用minus

   select * from emp where rownum <= 15 minus select * from emp where rownum < 10;

猜你喜欢

转载自tzz6.iteye.com/blog/2210480