`

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;

   Oracle日期、字符串格式化函数

函数返回类型描述例子
to_char(timestamptext) text 把时间戳转换成字串 to_char(current_timestamp, 'HH12:MI:SS')
to_char(intervaltext) text 把时间间隔转为字串 to_char(interval '15h 2m 12s', 'HH24:MI:SS')
to_char(inttext) text 把整数转换成字串 to_char(125, '999')
to_char(double precision,text) text 把实数/双精度数转换成字串 to_char(125.8, '999D9')
to_char(numerictext) text 把 numeric 转换成字串 to_char(numeric '-125.8', '999D99S')
to_date(texttext) date 把字串转换成日期 to_date('05 Dec 2000', 'DD Mon YYYY')
to_timestamp(texttext) date 把字串转换成时间戳 to_timestamp('05 Dec 2000', 'DD Mon YYYY')
to_number(texttext) numeric 把字串转换成 numeric to_number('12,454.8-', '99G999D9S')

 

用于日期/时间格式化的模板

 

模板描述
HH 一天的小时数 (01-12)
HH12 一天的小时数 (01-12)
HH24 一天的小时数 (00-23)
MI 分钟 (00-59)
SS 秒 (00-59)
MS 毫秒 (000-999)
US 微秒 (000000-999999)
SSSS 午夜后的秒 (0-86399)
AM 或 A.M. 或 PM 或 P.M. 正午标识(大写)
am 或 a.m. 或 pm 或 p.m. 正午标识(小写)
Y,YYY 带逗号的年(4 和更多位)
YYYY 年(4和更多位)
YYY 年的后三位
YY 年的后两位
Y 年的最后一位
BC 或 B.C. 或 AD 或 A.D. 纪元标识(大写)
bc 或 b.c. 或 ad 或 a.d. 纪元标识(小写)
MONTH 全长大写月份名(空白填充为9字符)
Month 全长混合大小写月份名(空白填充为9字符)
month 全长小写月份名(空白填充为9字符)
MON 大写缩写月份名(3字符)
Mon 缩写混合大小写月份名(3字符)
mon 小写缩写月份名(3字符)
MM 月份号(01-12)
DAY 全长大写日期名(空白填充为9字符)
Day 全长混合大小写日期名(空白填充为9字符)
day 全长小写日期名(空白填充为9字符)
DY 缩写大写日期名(3字符)
Dy 缩写混合大小写日期名(3字符)
dy 缩写小写日期名(3字符)
DDD 一年里的日子(001-366)
DD 一个月里的日子(01-31)
D 一周里的日子(1-7;周日=1)
W 一个月里的周数(1-5)(第一周从该月第一天开始)
WW 一年里的周数(1-53)(第一周从该年的第一天开始)
IW ISO 一年里的周数(第一个星期四在第一周里)
CC 世纪(2 位)
J 儒略日(自公元前4712年1月1日来的天数)
Q 季度
RM 罗马数字的月份(I-XII;I=JAN)(大写)
rm 罗马数字的月份(I-XII;I=JAN)(小写)
TZ 时区字串 (大写)
tz 时区字串 (小写)

例子:

--美式时间
select to_date('Aug 29 2014 1:54PM', 'Month DD YYYY hh:miam' ,'nls_date_language=American') tm
from users;
--中式时间
select to_date('6月 29 2014 1:54', 'Month DD YYYY hh24:mi') tm
from users; 

 

注意:nls_date_language=American用于指定语言,解决月分无效的问题

 

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;

7、序列

7.1、创建序列语法:(需要CREATE SEQUENCE系统权限)

        CREATE SEQUENCE 序列名

   [START WITH n]

   [INCREMENT BY n]

   [{MINVALUE n}]

   [{MAXVALUE n|NOMAXVALUE}]

   [{CYCLE|NOCYCLE}]

   [{CACHE n|NOCACHE}];

  MINVALUE:定义序列生成器能产生的最小值。NOMAXVALUE是默认选项(表示没有最小值定义),

  这时对于递减序列,系统能够产生的最小值是,10的26次方;对于递增序列,最小值是1。

  MAXVALUE n|NOMAXVALUE:定义序列生成器能产生的最大值。选项NOMAXVALUE是默认选项,

  代表没有最大值定义,这时对于递增序列,系统能够产生的最大值是10的27次方;对于递减序列,

  最大值是-1。

  START WITH:定义序列的初始值(即产生的第一个值),默认为1。

  INCREMENT:用于定义序列的步长。如果省略,则默认为1,如果出现负值,

  则代表序列的值是按照此步长递减的。

  CYCLE|NOCYCLE:表示当序列生成器的值达到限制值后是否循环。CYCLE代表循环,

  NOCYCLE代表不循环。如果循环,则当递增序列达到最大值时,循环到最小值;对于递减序列达

  到最小值时,循环到最大值。如果不循环,达到限制值后,继续产生新值就会发生错误。

  CACHE n|NOCACHE:CACHE(缓冲)定义存放序列的内存块的大小,默认为20。NOCACHE表示

  不对序列进行内存缓冲。对序列进行内存缓冲,可以改善序列的性能。

  例子:

   create sequence seq_test_1

   minvalue 1

   maxvalue 100000

   start with 15

   increment by 1

   nocache;

  应用:

 select seq_test_1.nextval from dual;

7.2、修改序列语法:

        ALTER SEQUENCE 序列名

   [INCREMENT BY n]

   [{MAXVALUE/ MINVALUE n|NOMAXVALUE}]

   [{CYCLE|NOCYCLE}]

   [{CACHE n|NOCACHE}];

注:不能修改序列的初始值

7.3、删除序列语法:

DROP SEQUENCE 序列名;

分享到:
评论

相关推荐

    Oracle从入门到高级应用的全部课程文档

    Day05-Oracle常用函数.pdf Day06-Oracle高级查询一.pdf Day07-Oracle高级查询二.pdf Day08-Oracle分页查询和视图.pdf Day09-存储过程.pdf Day10-变量定义和循环控制.pdf Day11-plsql游标和函数.pdf Day12-触发器.pdf...

    oracle使用管理笔记(一些经验的总结)

    13.oracle函数 26 (1)字符函数 26 (2)数学函数 26 (3)日期函数 27 (4)给表取别名的时候,不能加as;但是给列取别名,是可以加as 27 (5)转换函数 27 (6) to_char(date,'format') 27 (7) to_date(string,'format') 28 ...

    ORACLE9i_优化设计与系统调整

    §3.4 DBA常用参数说明 71 §3.4.1 跟踪文件路径(BACKGROUND_DUMP_DEST) 71 §3.4.2 在缓冲区驻留对象(BUFFER_POOL_KEEP) 71 §3.4.3 版本兼容(COMPATIBLE) 72 §3.4.4 控制文件路径(CONTROL_FILES) 72 §...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    学习oracle,首先我们必须要掌握常用的基本命令,oracle中的命令比较多,常用的命令如下: 1. 登录命令(sqlplus) 说明:用于登录到oracle数据库 用法:sqlplus 用户名/密码 [as sysdba/sysoper] 注意:当用特权用户...

    oracle数据库sql-笔记.zip

    以思维导图的形式(xmind),呈现oracle数据库知识点....函数,表达式,聚合函数,子查询,分组查询,分页查询,视图,序列等)以及数据库的整体框架,以便你更好的学习,阅读。。感谢各位的支持,谢谢大家赏识

    MySQL,Oracle系统学习,以及SQL语言—–数据库篇学习笔记

    SQL语言二维表的创建约束example外键约束删除约束序列索引视图 `VIEW`分页备份表二维表的维护添加新字段修改原有字段删除表修改表名表数据的操作(关键时刻)nullselectorder bywhere运算符Oracle中SQL函数单行函数...

    Oracle事例

    14、查询从多少行到多少行的记录(可以用在web开发中的分页显示) select * from ( select rownum row_id,b.* from (select a.* from sys_oper a) b ) where row_id between 15 and 20 15、对公共授予访问权 ...

    Mycat-server-1.6-RELEASE源码

    支持数据的多片自动路由与聚合,支持sum,count,max等常用的聚合函数,支持跨库分页。 支持单库内部任意join,支持跨库2表join,甚至基于caltlet的多表join。 支持通过全局表,ER关系的分片策略,实现了高效的多表join...

    asp.net知识库

    Oracle中PL/SQL单行函数和组函数详解 mssql+oracle Oracle编程的编码规范及命名规则 Oracle数据库字典介绍 0RACLE的字段类型 事务 CMT DEMO(容器管理事务演示) 事务隔离性的一些基础知识 在组件之间实现事务和异步...

    Java面试宝典2020修订版V1.0.1.doc

    19、oracle分页语句 47 20、从数据库中随机取50条 47 21、order by与group by的区别 47 22、commit在哪里会运用 47 23、行转列、列换行怎么转 48 24、什么是PL/SQL? 49 25、序列的作用 50 26、表和视图的关系 50 27...

    经典SQL脚本大全

    卷序列号码为 00000030 4489:1826 C:. │ sqlserver2000.txt │ ├─第01章 │ 1.9.1 设置内存选项.sql │ 1.9.2(2) 使用文件及文件组.sql │ 1.9.2(3) 调整tempdb数据库的文件属性.sql │ ├─第02章 │ │ 2.1 ...

    db2-技术经验总结

    1.10. 尽量让fetch first n row only或者分页的时候结合optimize for n rows使用(原) 32 1.11. 格式化字符串(原) 33 1.12. 10大DB2优化技巧 33 1.13. 使用DB2的整数转换浮点小数时注意(原) 41 1.14. 使用递归制造...

    精髓Oralcle讲课笔记

    -- 首先,以超级管理员的身份登录oracle sqlplus sys/bjsxt as sysdba --然后,解除对scott用户的锁 alter user scott account unlock; --那么这个用户名就能使用了。 --(默认全局数据库名orcl) 1、...

    千方百计笔试题大全

    199、在ORACLE大数据量下的分页解决方法。一般用截取ID方法,还有是三层嵌套方法。 47 200、xml有哪些解析技术?区别是什么? 48 201、你在项目中用到了xml技术的哪些方面?如何实现的? 48 202、用jdom解析xml文件时...

    java面试题

    39. 解释$ORACLE_HOME 和$ORACLE_BASE的区别? 19 40. session与cookie的区别和联系? 19 41. Statement和PrepareStatement的区别 19 42. JSP的内置对象及方法。 19 43. JSP的常用指令 20 44. 四种会话跟踪技术 20 45...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例219 序列化与反序列化 276 实例220 分数的常见运算 277 实例221 整数取值范围判断 279 10.2 Commons Math组件简介 280 实例222 描述统计学应用 280 实例223 绘制简单直方图 281 实例224 一元线性回归计算 282 ...

Global site tag (gtag.js) - Google Analytics