函数:这里的函数相当于java中写好的一些方法,有名字,可以传递参数,实现某一项具体功能。

函数分为:

1.单行函数

1.字符函数

2.日期函数

3.数字函数

4.转换函数

2.分组函数(后面的章节再做学习)

学前须知:

哑表dual

dual是一个虚拟表,辅助查找和运算。通常用在select语句中,作为查询的目标表结构,oracle保证dual里面永远只有一条记录。

例如:

显示1+1的结果,可以看出,dual很多时候是为了构成select的标准语法

select 1+1 from dual;

字符函数

1) LOWER:转换成小写

2) UPPER:转换成大写

3) INITCAP:首字母变成大写,其余都小写

4) CONCAT:字符串的连接

5) SUBSTR(str,start,length):字符串的截取

6) LENGTH:求字符串的长度

7) NVL : 转换null的值。(前边已经用过)

nvl2:

LOWER 把字符转为小写

例如:把'HELLO'转换为小写

select lower('HELLO')

from dual;

例如:把s_emp表中的last_name列的值转换为小写

select lower(last_name)

from s_emp;

upper 把字符转换为大写

例如:把'world'转换为大写

select upper('world')

from dual;

例如:把s_emp表中的last_name列的值转换为大写

select upper(last_name)

from s_emp;

例如:查询s_emp表中名字为Ngao的人信息

这样是查不到:

select last_name,salary,dept_id

from s_emp

where last_name='NGAO';

这样就可以查询到了:

select last_name,salary,dept_id

from s_emp

where upper(last_name)='NGAO';

initcap 把字符串首字母大写

例如:把'hELLO'转换为首字母大写,其余字母小写

select initcap('hELLO')

from dual;

concat 把俩个字符串连接在一起(类似之前的||的作用)

例如:把'hello'和'world'俩个字符串连接到一起,并且起个别名为msg

select concat('hello','world') msg

from dual;

例如:把first_name和last_name俩个列的值连接到一起

select concat(first_name,last_name)

from s_emp;

substr 截取字符串

例如:截取'hello'字符串,从第2个字符开始,截取后面的3个字符

select substr('hello',2,3)

from dual;

length 获得字符串长度

例如:获得'world'字符串的长度

select length('world')

from dual;

例如:获得s_emp表中last_name列的每个值的字符长度

select length(last_name)

from s_emp;

nvl 替换列中为null的值

在前面的章节已经使用过了

例子:

1.查找last_name全小写的值为velasquez的员工的lastname

select last_name

from s_emp

where lower(last_name) = 'velasquez';

2.查找last_name的长度>10的所有员工的last_name

select last_name

from s_emp

where length(last_name)>10;

数字函数

1) ROUND:四舍五入

2) TRUNC:截取,不进行四舍五入

3) MOD:取余

round 四舍五入

round(arg1,arg2)

第一个参数表示要进行四舍五入操作的数字

第二个参数表示保留到哪一位(负数代表小数点之前,0,正数代表小数点之后)

例如:

保留到小数点后面2位

select round(45.923,2)

from dual;

保留到个位 (个十百千万...)

select round(45.923,0)

from dual;

保留到十位 (个十百千万...)

select round(45.923,-1)

from dual;

trunc 截取到某一位

trunc(arg1,arg2)

和round的用法一样,但是trunc只舍去不进位

例如:

截取到小数点后面2位

select trunc(45.923,2)

from dual;

截取到个位 (个十百千万...)

select trunc(45.923,0)

from dual;

截取到十位 (个十百千万...)

select trunc(45.923,-1)

from dual;

mod 取余

mod(arg1,arg2)

第一个参数表示要进行取余操作的数字

第二个参数表示参数1和谁取余

例如:

把10和3进行取余 (10除以3然后获取余数)

select mod(10,3)

from dual;

日期函数

1) MONTHS_BETWEEN:两个日期之间的月数

2) ADD_MONTHS:在指定日期上增加月数

3) NEXT_DAY:指定日期的下一个星期几是哪天

4) LAST_DAY:指定日期的最后一天

5) ROUND:对指定日期进行四舍五入

6) TRUNC:对指定日期进行截取

sysdate关键字

表示系统的当前时间

例如:

显示时间:当前时间

select sysdate from dual;

注意:sysdate进行加减操作的时候,单位是天

例如:

显示时间:明天的这个时候

select sysdate+1 from dual;

例如:

显示时间:昨天的这个时候

select sysdate-1 from dual;

例如:

显示时间:1小时之后的时候

select sysdate+1/24 from dual;

months_between 俩个时间点之间相差多少个月(单位是月)

例如:

30天之后和现在相差多少个月

select months_between(sysdate+30,sysdate)

from dual;

add_months  返回一个日期数据:表示一个时间点,往后推x月的日期

例如:

'01-2月-2016'往后推2个月

select add_months('01-2月-2016',2)

from dual;

例如:

当前时间往后推4个月

select add_months(sysdate,4)

from dual;

next_day 返回一个日期数据:表示一个时间点后的下一个星期几在哪一天

例如:

当前时间的下一个星期5是哪一个天

select next_day(sysdate,'星期五')

from dual;

注意:

如果要使用'FRIDAY',那么需要把当前会话的语言环境修改为英文

last_day 返回一个日期数据:表示一个日期所在月份的最后一天

例如:

当前日期所在月份的最后一天

select last_day(sysdate)

from dual;

round  对日期进四舍五入,返回操作后的日期数据。逢16日往月份进一,逢7月往年份进一

round(sysdate,'year/y/yy/yyy/yyyy') 年   7月节点

round(sysdate,'mm/month')  月 16号节点

round(sysdate,'d/day')  星期   星期四节点

round(sysdate,'dd') :  天  -》 12点节点

例如:

把当前日期四舍五入到月

select round(sysdate,'MONTH')

from dual;

把当前日期四舍五入到年

select trunc(sysdate,'dd')

from dual;

trunc  对日期进行截取 和round类似,但是只舍弃不进位

trunc(sysdate,'yyyy/year') --返回当年第一天。

  trunc(sysdate,'mm/month') --返回当月第一天。

  trunc(sysdate,'d/day') --返回当前星期的第一天。

  trunc(sysdate,'dd')--返回当前年月日

类型转换函数

1).TO_CHAR 将日期或者数值转换成字符串

u   2).TO_NUMBER 将字符串转换成数字

u    3).TO_DATE 将日期字符串转换成日期

to_char 把日期转换为字符

to_char('日期字符串','fmt');

例如:

把当前日期按照指定格式转换为字符串

select to_char(sysdate,'yyyy')

from dual;

日期格式:

yyyy/YYYY:四位数的年份

rrrr:四位数的年份

yy:两位数的年份

rr:两位数的年份

mm:两位数的月份(数字)

D:一周的第几天

DD:一月的第几天

DDD :一年的第几天

YEAR:英文的年份

MONTH:英文全称的月份

mon:英文简写的月份

ddsp:英文的第几天

ddspth:英文序列数的第几天

DAY:全英文的星期

DY:简写的英文星期

hh:小时

mi:分钟

ss:秒

AM:上午

PM:下午

例如:

测试常见的一些日期数据转换为字符串的格式

select to_char(sysdate,'yyyy MM D DD DDD YEAR MONTH ddsp ddspth DAY DY') from dual;

select to_char(sysdate,'dd-mm-yy')

from dual;

select to_char(sysdate,'dd-mm-yy HH24:MI:SS AM')

from dual;

千年虫:

在早期的计算机的程序中规定了的年份仅用两位数来表示。也就是说,假如是1971年,在计算机里就会被表示为71,但是到了2000年的时候这个情况就出现了问题,计算机就会将其年份表示为00。这样的话计算机内部对年份的计算就会出现问题。这个事情当时被称为千年虫

数据库中表示日期中年份的有俩种: yy和rr

之前一直使用的时候yy格式,后来才有的rr格式

yy表示使用一个俩位数表示当前年份:

1990 ---yy数据库格式---> 90

1968 ---yy数据库格式---> 68

1979 ---yy数据库格式---> 79

rr格式表示: 另外参照图片:rr日期格式规则.png

如果日期中的年份采用的格式为rr,并且只提供了最后2位年份,那么年份中的前两位数字就由两部分共同确定:提供年份的两位数字(指定年),数据库服务器上当前日期中年份的后2位数字(当年)。确定指定年所在世纪的规则如下:

规则1 如果指定年在00~49之间,并且当前年份在00~49之间,那么指定年的世纪就与当前年份的世纪相同。因此,指定年的前两位数字就等于当前年份的前两位数字。例如,如果指定年为15,而当前年份为2007,那么指定年就是2015。

规则2 如果指定年在50~99之间,并且当前年份在00~49之间,那么指定年的世纪就等于当前年份的世纪减去1。因此,指定年的前两位数字等于当前年份的前两位数字减去1。例如,如果指定年为75,而当前年份为2007,那么指定年就是1975。

规则3 如果指定年在00~49之间,并且当前年份在50~99之间,那么指定年的世纪就等于当前年份的世纪加上1。因此,指定年的前两位数字等于当前年份的前两位数字加上1。例如,如果指定年为15,而当前年份为2075,那么指定年就是2115。

规则4 如果指定年在50~99之间,并且当前年份在50~99之间,那么指定年的世纪就与当前年份的世纪相同。因此,指定年的前两位数字就等于当前年份的前两位数字。例如,如果指定年为55,而当前年份为2075,那么指定年就是2055。

注意:rr格式并没有完全的解决俩位数年份保存的问题,思考里面还有哪些问题存在。

to_char 把数字转换为字符

L : 本地货币符号

$ : $

. : 小数点

, : 千分符

9 :  0-9

0 :  0-9, 如果位数不足,强制补0

例如:

select to_char(salary,'$999,999.00')

from s_emp;

fm表示去除结果显示中的开始的空格

select to_char(salary,'fmL999,999.00')

from s_emp;

L表示系统本地的货币符号

select to_char(salary,'fmL999,999.00')

from s_emp;

to_number 把字符转换为数字

例如:

select to_number('1000')

from dual;

//这个写法是错的 abc不能转换为数字

select to_number('abc')

from dual;

to_date 把字符转换为日期

.TO_DATE(char, ['fmt']):例如

select TO_DATE ('10-September-1992','dd-Month-YYYY') from dual

.使用format的元素格式

例如:

select to_date('10-12-2016','dd-mm-yyyy')

from dual;

select to_date('25-5月-95','dd-month-yy')

from dual;

//session语言环境设置为英文下面可以运行

select to_date('25-MAY-95','dd-MONTH-yy')

from dual;

oracle数据库中表示一个日期数据的几种方式

1.sysdate

2.oracle默认的日期格式 例如:'25-MAY-95'

3.to_date函数转换

Oracle简单的函数语言的更多相关文章

  1. [02] Oracle简单单行函数(字符+数值+日期+转换+通用)

    1. 字符函数 --upper(str), lower(str):将str转换成大,小写 select upper('hello') as x1, lower('HELlo') as x2 from ...

  2. [转载]ORACLE日期时间函数大全

    ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02   13:45:25为例)           Year:              yy two digits 两位年 ...

  3. ORACLE日期时间函数

    ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02   13:45:25为例)           Year:              yy two digits 两位年 ...

  4. Oracle 中 decode 函数用法

    Oracle 中 decode 函数用法 含义解释:decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下:IF 条件=值1 THEN RETURN(翻译 ...

  5. Oracle日期时间函数大全

    ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02 13:45:25为例) Year: yy two digits 两位年 显示值:07 yyy three digits ...

  6. 24、jQuery常用AJAX-API/Java调用MySQL / Oracle过程与函数

      1)掌握jQuery常用AJAX-API 2)掌握Java调用MySQL / Oracle过程与函数 一)jQuery常用AJAX-API 目的:简化客户端与服务端进行局部刷新的异步通讯 (1)取 ...

  7. ORACLE 常用字符函数

    ORACLE 常用字符函数1 ASCII(arg1)返回参数arg1的十进制数字表示.如果数据库设置为ASCII,则采用的是ASCII码字符.如果设置为EBCDIC,则采用的是EBCDIC字符 sel ...

  8. oracle的sql函数

    只读事务set transaction read only当一个用户添加了只读事务,则查询时只会查到设置只读事务之前的内容,在并发量大的系统中,通过设置只读事务 便于统计 oracle的sql函数的使 ...

  9. [转]ORACLE日期时间函数大全

    本文转自:http://www.cnblogs.com/chuncn/archive/2009/04/29/1381282.html ORACLE日期时间函数大全 TO_DATE格式(以时间: ::2 ...

随机推荐

  1. HDU 1565&1569 方格取数系列(状压DP或者最大流)

    方格取数(2) Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total S ...

  2. symmetric multiprocessor

    https://en.wikipedia.org/wiki/Symmetric_multiprocessor_system A symmetric multiprocessor system (SMP ...

  3. 如何保证App外包的最终质量,不延期不烂尾?

    选择App外包服务的客户,最害怕的就是App项目延期甚至烂尾.投入了巨大的时间和财富,结果最后App无法上线. 解决这个问题有两个方法:第一,在选择公司前,先了解清楚有关App外包的一切问题,做到心里 ...

  4. 使用Xcode6和IOS8SDK以后遇到的问题

    定位.苹果在IOS8里面修改了定位授权协议,也就意味着你原来的app在ios8上很可能无法定位.目前最好的办法就是在app启动的时候调用IOS8的定位授权API来获取用户的授权,这样就不要在其他地方做 ...

  5. DuiLib学习bug整理——某些png不能显示

    今天下午遇到用ps导出的png显示不出来的情况.而从其他来源的png有的可以显示.到群里问了下也有人遇到过,但是都没想明白具体原因.后来经人指点说png保存时存在深度位不同.最后经过测试 8位深度.3 ...

  6. RW-50004 While Running adrunfmw during EBS 12.2 Installation

    安装过程中报错: 日志文件信息: Executing command: /app/R1220/startCD/Disk1/rapidwiz/jre/Linux_x64//bin/java -cp /a ...

  7. 用oop分析场景,写出代码。房间里,有人、猫、老鼠在睡觉,然后猫醒了发出叫声,叫声惊醒了人,人从床上坐起来,惊醒了老鼠,老鼠开始逃跑。

    首先分析有哪些类: 应该有房子.动物类.人类.猫类.老鼠类. 房子不仅仅是一个容器,因为猫在房子里叫,惊醒了人和老鼠,所以猫叫是一个事件,通过这个事件触发人和老鼠的惊醒. 可以定义一个委托,利用委托绑 ...

  8. ligerui_ligerTree_004_对"ligerTree"节点操作

    ligerTree节点操作: 源码地址:http://download.csdn.net/detail/poiuy1991719/8571255 效果图: 代码: json.txt: [ { text ...

  9. 我们应该如何去了解JavaScript引擎的工作原理

    “读了你的几篇关于JS(变量对象.作用域.上下文.执行代码)的文章,我个人觉得有点抽象,难以深刻理解.我想请教下通过什么途径能够深入点的了解javascript解析引擎在执行代码前后是怎么工作的,ec ...

  10. Windows消息机制概述

    消息是指什么?     消息系统对于一个win32程序来说十分重要,它是一个程序运行的动力源泉.一个消息,是系统定义的一个32位的值,他唯一的定义了一个事件,向 Windows发出一个通知,告诉应用程 ...