`
touchmm
  • 浏览: 1037437 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

oracle系统函数

 
阅读更多

<!-- [if gte mso 9]><xml><w:WordDocument><w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel><w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery><w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery><w:DocumentKind>DocumentNotSpecified</w:DocumentKind><w:DrawingGridVerticalSpacing>7.8</w:DrawingGridVerticalSpacing><w:View>Normal</w:View><w:Compatibility></w:Compatibility><w:Zoom>0</w:Zoom></w:WordDocument></xml><![endif]-->

--===============

--author:yeeXun

--date:发表于 @ 2010年12月21日 17:03:00

--address:Jau 17-304

--===============

一. 字符函数

lower char ):将字符串转化为小写格式

upper char ):将字符串转化为大写格式

length char ):返回字符串的长度

substr char m n ):在 char 字符串中从 m 开始,截取 n 个字符

❤如果省略了n ,那么默认长度是 m 位置以后剩下的 char 的长度

实例:

?将所有员工的名字按小写方式显示:

selectlower(ename)name,jobfromemp;

NAMEJOB

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

smithCLERK

allenSALESMAN

wardSALESMAN

...

14rowsselected

?将所有员工的名字按大写的方式显示:
selectupper(ename)fromemporderbyename;

UPPER(ENAME)

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

ADAMS

ALLEN

BLAKE

...

14rowsselected

?显示正好为5个字符的员工的姓名:

selectename,job,salfromempwherelength(ename)=5;

ENAMEJOBSAL

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

SMITHCLERK800.00

ALLENSALESMAN1600.00

JONESMANAGER2975.00

...

8rowsselected

?显示所有员工姓名的前三个字符:

selectsubstr(ename,1,3)姓名fromemp;

姓名

------

SMI

ALL

WAR

...

14rowsselected

?以首字母大写其他字母小写的方式显示所有员工的姓名:

select upper(substr(ename,1,1))||lower(substr(ename,2 ,length(ename)-1 ) )姓名 fromemp;

姓名

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

Smith

Allen

Ward

...

14rowsselected

?将首字母小写其他字符大写的方式显示员工姓名:

s elect lower(substr(ename,1,1))||upper(substr(ename,2 ,length(ename ) -1) 姓名 fromemp;

姓名

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

sMITH

aLLEN

wARD

...

14rowsselected

/*郁闷啊,突然的断电,我写的东西都没了,登录 PL/SQLDeveloper 说没有监听 程序,难道是监听程序自动关闭了?但是由oracle 附带的 oracleSQL*Plus 登录, 能成功登录。

我的电脑-> 管理 -> 服务和应用程序 -> 服务

查看,原来真的这突然的断电导致了oracle 监听进程 OracleOraDb10g_home1TNSListener 关闭,手动启动;再次登录 PL/SQLDeveloper ,还说没有监听进程,再次郁闷;重新启动,登录 PL/SQLDeveloper ,成功!原来啊,刚刚才的监听进程启动没生效!

*/

replace(char1,search_string,replace_string): char1 里面用 replace_string来替换 search_string

?显示所有员工的姓名,用" 我是 A" 替换所有 "A"

selectreplace(ename,'A','我是大啊')替换后的姓名fromemp;

替换后的姓名

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

SMITH

我是大啊LLEN

W我是大啊RD

M我是大啊RTIN

BL我是大啊KE

SCOTT

我是大啊D我是大啊MS

J我是大啊MES

...

14rowsselected

instr char1,char2,[,n[,m]] : 取子串在字符串的位置

二. 数学函数

数学函数的输入参数和返回值的数据类型都是数字类型的,数学函数有:cos,cosh,exp,ln,log,sin,sinh,sqrt,tan,tanh,acos,asin,atan,round,... 常用的有:

round(n,[m]) :用于执行四舍五入,如果省略了 m ,则四舍五入到整数,如果 m 为正数,则四舍五入到小数的m 位后,如果 m 为负数,则四舍五入到小数点的 m 位前。

?计算奖金不为空的员工的年薪

selectename,(round(sal)+round(comm))*13年薪,salfromempwhere commisnotnull;

ENAME年薪SAL

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

ALLEN247001600.00

WARD227501250.00

MARTIN344501250.00

TURNER195001500.00

trunc(n,[m]):用于截取数字,如果省略掉 m ,就截取小数部分,如果 m 是正数, 就截取到小数点的m 位后,如果 m 为负数,则截取到小数点的前 m

mod(m,n) :求 m n 的余数

floor(n) :返回小于或等于 n 的最大整数

ceil(n) :返回大于会等于 n 的最小整数

dual表:在做 oracle 测试时,可以使用此表,主要用于做测试,虚拟。

?显示在一个月为30 天的情况下所有员工的日薪金,忽略余数:

selecttrunc(sal/30),enamefromemp;

TRUNC(SAL/30)ENAME

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

26SMITH

53ALLEN

41WARD

...

14rowsselected

selectfloor(sal/30),enamefromemp;

结果与上面的相同

其他数学函数:

Abs(n):返回 n 的绝对值

Acos(n):返回 n 的反余弦值

Asin(n):返回 n 的反正弦值

Atan(n):返回 n 的反正切值

Cos(n):

Exp(n):返回 e n 次幂

Log(m,n):取对数

Power(m,n):返回 m n 次幂

三. 日期函数

/*

当打开PL/SQLDeveloper 进行登录时,弹出一个警告窗口:( ORA-12560:TNS: 协议适配器错误),之后无法登录。我的电脑-> 属性 -> 管理 -> 服务 , 发现我的 oracle 监听进程自动关闭了,当我启动时,弹出这样的警告信息:(在本地计算机上的 OracleOraDb10g_home1TNSListener服务启动后又停止。一些服务自动停止,如 果它们没有什么可做的,例如" 性能日志和警报 " 服务)。也就是启动失败,但是用 oracle自动附带的 OracleSQL*Plus 登录,成功了,这是为什么呢? */

介绍

日期函数用于处理date 类型的数据,默认情况下日期格式为 dd-mm-yy ,例如 25-7-1987

1. sysdate:返回系统时间

2. add_months(d,n):

?查找已经入职 8 各月多的员工

selectename,job,salfromempwhere sysdate>add_months(hiredate,300)

?显示满10 年服务年限的员工的姓名和雇佣日期

selectename,job,salfromempwhere sysdate>add_months(hiredate,240)

?对于每个员工,显示加入公司的天数

selecttrunc(sysdate-hiredate)入职天数 ,ename 姓名 fromemp;

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

?找出各月倒数第三天受雇的所有员工

selecthiredate,enamefromempwhere last_day(hiredate)-2=hiredate;

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

以上内容是在两周之前写下的

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

/*课程设计过去了一个周,紧接着是一课程期末考试,和 6 级考试,哎!紧张的日子 过去了,现在有时间来继续我的 oracle 学习了。

两周之前,我的PL/SQLDevloper 出了点问题,一直未去解决。今天打开它时,居 然已经过了 30 天的试用期,郁闷,卸载了重新安装吧!可是找不到源文件了,于是上 找了一个 PL/SQLDevloper8.0 版本的,试用期也是 30 天。刚刚安装好,用户 scott 登录,居然连接超时,没有出现前两周出现的情况。但是提示未登录,于是建 一个 commandwindow ,在里面输入: connectscott/tiger

ConnectedtoOracleDatabase10gEnterpriseEditionRelease10.2.0.1.0

Connectedasscott

居然连接成功了!

SQL>showuser

Useris"scott"

再次验证:

select*fromemp;

EMPNOENAMEJOBMGRHIREDATESALCOMMDEPTNO

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

7369SMITHCLERK79021980-12-17800.0020

7499ALLENSALESMAN76981981-2-201600.00300.0030

.......

14rowsselected

*/

四. 转换函数

转换函数用于将数据类型从一种转换为另一种。在某些情况下,oracleserver 允许值的数据类型和实际的不一样,这时 oracleserver 会隐式的转化数据类型。

例如:

createtablet1 idint ;

insertintot1values '10' -- 这样 oracle 会自动的将 '10' 转换为 10

createtablet2 idvarchar2(10) ;

insertintot2values 1 -- 这样 oracle 就会自动的将 1 转换为 '1';

1.to_char函数

to_char

插入一条数据:

SQL>insertintoempvalues(8881,'test用户 ','MANAGER',7782,sysdate,23,23,10);

emp 表中的雇佣日期转换为字符串的形式显示出来:

SQL>selectename,to_char(hiredate,'yyyy-mm-ddhh24:mi:ss')fromemp;

ENAMETO_CHAR(HIREDATE,'YYYY-MM-DDHH

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

test用户2010-12-2116:03:33

SMITH1980-12-1700:00:00

ALLEN1981-02-2000:00:00

......

15rowsselected

这里说一下日期格式:

yy:两位数字的年份2010-->10

yyyy:四位数字的年份2010

mm:两位数字的月份2月-->02

dd:两位数字的天5号-->05

hh24:时间的24小时制

hh12:时间的12小时制度

mi、ss:显示分钟/秒

9:显示数字,忽略前面的 0

0:显示数字,如位数不足,则用 0 补齐

·:在指定位置显示小数点

,:在指定位置显示逗号

$:在数字前加美元符号

L:在数字前加本地货币符号

C:在数字前加国际货币符号

G:在指定位置显示组分隔符

D:在指定位置显示小数点符号 (.)

SQL>selectename,to_char(hiredate,'yyyy-mm-ddhh24:mi:ss'),to_char(sal,'L99,999.99')fromemp;

ENAMETO_CHAR(HIREDATE,'YYYY-MM-DDHHTO_CHAR(SAL,'L99,999.99')

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

test用户2010-12-2116:03:33¥23.00

SMITH1980-12-1700:00:00¥800.00

ALLEN1981-02-2000:00:00¥1,600.00

......

15rowsselected

?显示 1980年入职的员工

SQL>select*fromempwhereto_char(hiredate,'yyyy')=1980;

EMPNOENAMEJOBMGRHIREDATESALCOMMDEPTNO

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

7369SMITHCLERK79021980-12-17800.0020

2. t o_date函数

t o_date函数用于将字符串转换为 date 类型的数据。

3.sys_context

每个用户对应一个方案,方案名和用户名相同。用户一旦被创建后,就为其创建了一个方案。

1) .terminal:当前会话客户所对应的终端的标识符

2) .language:语言

3) .db_name:当前数据库名称

4) .mls_date_format:当前会话客户所对应的日期格式

5) .session_user:当前会话客户所对应的数据库用户名

6) .current_schema:当前会话客户所对应的默认方案名

7) .host:返回数据库所在主机名称

SQL>selectsys_context('userenv','language')fromdual;

SYS_CONTEXT('USERENV','LANGUAG

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

SIMPLIFIEDCHINESE_CHINA.ZHS16GBK

实例这里有

http://xsb.itpub.net/post/419/51694

分享到:
评论

相关推荐

    Oracle系统函数

    自己整理的oracle系统函数,相信对你会有帮助.

    oracle系统函数大全

    以下是关于Oracle系统函数的一些详细说明,以标题和描述中提到的几个为例: 1. ASCII 函数: ASCII 函数返回一个字符的ASCII码值,即对应的十进制数。例如,`ASCII('A')`返回65,`ASCII(' ')`返回32。这个函数在...

    Oracle系统函数大全

    本文将深入探讨Oracle系统函数的各个方面,帮助读者掌握这些关键工具的使用。 1. **什么是系统函数?** 在Oracle PL/SQL中,系统函数是由数据库本身提供的预定义函数,用于执行特定任务,如获取日期、处理字符串、...

    oracle系统内置函数大全

    以上是对Oracle系统内置函数大全的知识点介绍,内容涵盖了字符处理、数字计算、日期处理、数据类型转换、分组聚合等多个方面的函数。Oracle数据库管理员和开发人员经常需要用到这些函数以实现各种数据处理需求。

    ORACLE常用函数功能及演示

    由于这些内置函数都是由ORACLE公司的编程大家所写,而且其执行代码是内嵌在ORACLE数据库系统中的,因此其执行效率极高。 使用ORACLE所提供的内置函数,将大大提高程序代码的执行效率。“站在高人的肩膀上,将使你变...

    oracle自定义日期函数

    Oracle 日期处理函数是数据库管理系统中非常重要的一部分,最近看到有人在做 T-SQL 与 PL/SQL 的转化,问了些有关时间函数的处理。在 PL/SQL 中,Oracle 提供了其他的方法来处理日期函数,例如 DATE_ADD 函数。在 T-...

    oracle函数大全 oracle函数大全

    Oracle数据库系统提供了丰富的内置函数,这些函数用于处理各种数据类型,包括字符串、数值以及日期等。以下是关于Oracle函数的一些详细说明: 1. ASCII函数:ASCII函数返回与输入字符相对应的ASCII码,即十进制数字...

    oracle函数大全(CHM格式).rar

    Oracle数据库中的函数可以分为多种类型,包括内置函数、数学函数、字符串函数、日期时间函数、转换函数、系统信息函数等。例如: 1. **内置函数**:如`SYSDATE`用于获取当前系统日期,`USER`获取当前登录用户的...

    ORACLE CRC32函数

    ### ORACLE CRC32函数详解 #### 一、概述 在Oracle数据库中,`CRC32`函数是一种非常实用的功能,主要用于将字符类型的数据转换为一个唯一的数字类型,这一过程通常被称为散列(Hash)。通过该函数,可以方便地生成...

    oracle 函数大全 参考函数 手册 速查 chm格式

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统,其强大的功能和灵活性使得它在企业级应用中占据了重要地位。本资源是一份Oracle函数大全的手册,包含丰富的参考函数和速查信息,以CHM(Microsoft Compiled ...

    oracle内置函数学习

    Oracle内置函数是数据库管理系统Oracle中不可或缺的一部分,它们用于执行各种数据处理任务,包括数学运算、字符串操作、日期处理等。这篇博文将深入探讨Oracle内置函数的学习,帮助你更好地理解和运用这些功能强大的...

    oracle分析函数.doc

    Oracle分析函数是数据库管理系统Oracle中一组强大的工具,用于处理集合数据,特别是在复杂的报表和数据分析场景中。它们允许用户在单个SQL查询中执行聚合操作,同时保持行的原始顺序,这是传统的GROUP BY函数无法...

    Oracle内置函数大全

    Oracle内置函数是数据库管理系统Oracle 8i中的一个重要组成部分,这些函数极大地丰富了SQL查询和数据处理的能力。在Oracle中,日期格式和数字格式的说明符是处理数据的关键工具,它们决定了如何显示和解析日期和数字...

    oracle管道函数用法

    ### Oracle管道函数详解 #### 一、概述 Oracle管道函数是一种特殊类型的函数,它能够返回一个数据集合,并且能够在函数执行的过程中逐步返回结果,而不仅仅是最后的结果。这种特性使得管道函数非常适合于处理大量...

    oracle日常函数文档

    Oracle提供了获取系统信息的函数,如`USER`, `SESSION_USER`, `CURRENT_USER`, `DBMS_METADATA.GET_DDL()`等。这些函数可以帮助我们了解当前用户信息,获取对象的DDL定义,以及进行其他系统级别的查询。 七、连接和...

    oracle分析函数,窗口函数,报表函数

    Oracle 分析函数、窗口函数和报表函数是数据库查询和数据分析中的关键工具,尤其在复杂的OLAP(在线分析处理)系统中发挥着重要作用。在Oracle数据库中,这些功能提供了对大量数据进行高效处理的能力,帮助用户生成...

    oracle常用函数总结

    Oracle数据库是一个广泛使用的关系型数据库管理系统,它提供了丰富的内置函数来帮助用户处理和操作数据。以下是对标题和描述中提到的Oracle常用函数的详细总结: 1. ASCII 函数:这个函数返回一个字符对应的ASCII码...

Global site tag (gtag.js) - Google Analytics