`

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函数,序列与分页代码实现及相关练习题

    ### Oracle函数、序列与分页代码实现及相关知识点详解 #### 一、Oracle序列 在Oracle数据库中,**序列**是一种非常实用的对象,主要用于自动产生唯一编号。它可以在表中插入新记录时,自动生成唯一的键值。序列可以...

    ORACLE PL/SQL从入门到精通

    此外,书中还涉及到了ORACLE数据库的安装、存储过程的编写、序列操作、数据类型转换、程序设计指导原则、合并数据库中的数据行(MERGE)、约束、索引、子查询、分页技术等高级主题。 最后,还有关于字符串、数值、...

    使用简单的SQL语句实现的Oracle数据库分页技术

    本文将介绍一种利用简单SQL语句来实现Oracle数据库分页的方法,这种方法不依赖于复杂的PL/SQL过程或函数,而是通过SQL查询的巧妙设计来达到目的。 ### 分页公式的原理 在Oracle中,分页查询通常涉及到对结果集进行...

    Oracle分析函数示例数据

    Oracle分析函数是数据库查询中的重要工具,用于处理集合数据,提供了一种强大的方式来对一组行进行聚合操作,而不仅仅是单行。在这个“Oracle分析函数示例数据”中,我们有两个SQL脚本文件:user_order.sql和orders_...

    Oracle分析函数使用总结

    Oracle分析函数是数据库查询中的强大工具,它们允许对数据集进行聚合操作,同时保留原始行的信息。在Oracle数据库中,分析函数主要分为评级函数、窗口函数和聚合函数等几类。本文将重点讨论评级函数的使用,包括RANK...

    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 ...

    mybatis中oracle实现分页效果实例代码

    在上面的配置文件中,我们使用ROWNUM函数来实现物理分页,然后使用ORDER BY语句来指定排序列。 MyBatis中Oracle实现分页效果实例代码可以使用逻辑分页或物理分页来实现。这两种方法各有其优缺,选择哪一种方法取决...

    Oracle与DB2的对应关系

    本文将对 Oracle 与 DB2 的对应关系进行总结和分析,涵盖日期型数据转化、字符型转日期型、常用函数、JSP 实现分页、序列等多个方面。 一、日期型数据转化 在 Oracle 中,日期型数据只有一个,即 Date 型,占用...

    oracle函数详解[收集].pdf

    Oracle函数详解涵盖了从基础操作到复杂查询的各个方面,理解和熟练运用这些函数和操作对于有效管理Oracle数据库至关重要。无论是数据查询、数据更新还是数据统计,都有相应的SQL语句和函数支持,使得数据处理变得...

    oracle图形界面操作和数据备份和分页-oracle表操作和数据库对象

    - **ROWNUM**: 使用 ROWNUM 函数是实现简单分页的常见方法。 - **OFFSET/FETCH**: 在 Oracle 12c 及更高版本中引入了 OFFSET 和 FETCH 子句来更灵活地实现分页。 **3.3 ROWNUM 示例** ```sql SELECT * FROM ( ...

    oracle常用操作(创建数据库等操作)

    以上就是Oracle数据库的一些常见操作,包括创建表空间、创建用户、设置自动增长字段、查询分页结果、数据导出、表空间使用率统计以及处理外键冲突。在实际操作中,应根据具体需求进行适当调整。

    Oracle Sql语句转换成Mysql Sql语句

    5. **函数和操作符**:两者内置的函数和操作符有所不同,例如Oracle的NVL对应MySQL的IFNULL,Oracle的TO_DATE对应MySQL的STR_TO_DATE。 6. **序列**:Oracle使用序列(SEQUENCE)来生成唯一ID,MySQL则常使用自增...

    oracle常用的sql语句

    ### Oracle常用的SQL语句知识点详解 #### 一、SQL概述 SQL(Structured Query Language),即结构化查询语言,是用于管理关系型数据库的标准语言。Oracle作为一款流行的关系型数据库管理系统,其支持的SQL语句与...

    老二牛车在Oracle数据库上构建JAVA应用程序二理论课.pdf

    - 通过实例演示了如何使用存储过程或函数来执行分页查询,强调了Oracle中游标和函数在数据分页处理中的重要性。 整体来看,这些知识点覆盖了Oracle数据库结构定义、数据操作优化、以及Java环境中的数据库编程,非常...

    oracle函数详解

    根据提供的文件内容,可以看出文档主要涉及的是Oracle SQL的基础语法与函数使用详解。下面将对文档中的各个知识点进行详细的解释和扩展。 ### Oracle SQL基础语法与函数详解 #### 1. 基本运算符 在Oracle SQL中,...

    老二牛车在Oracle数据库上构建NET应用程序二理论课.pdf

    总结上述内容,Oracle数据库与.NET应用程序集成的关键知识点包括但不限于:数据库操作、表空间与用户权限管理、表结构的创建与配置、序列和触发器的使用以及分页查询技术。掌握这些技术对于构建高效、稳定、可维护的...

    Oracle数据库基础教程:入门其实很简单

    - 开发工具:常用的Oracle开发工具介绍。 2. **Oracle+Hibernate应用实例**: - Hibernate简介:了解Hibernate框架的基本概念。 - Oracle与Hibernate集成:如何将Oracle数据库与Hibernate框架结合使用。 - 实例...

    SQL与ORACLE建立链接并进行查询及插入操作

    3. 自动序列:Oracle支持自动递增的序列,例如通过创建一个序列对象,然后在插入时引用它,如 `INSERT INTO table_name (id, column2) VALUES (seq_name.NEXTVAL, 'value2')`。 四、注意点 1. 权限管理:在执行查询...

Global site tag (gtag.js) - Google Analytics