ORACLE学习-2.单行函数

oracle函数分为单行函数和多行函数,下面的图能很清楚的说明单行函数和多行函数:

单行函数是指接收一个输入,返回一个输出包括 字符函数、数值函数、日期函数、转换函数和通用函数

 

多行函数和单行函数相比,oracle提供了丰富的基于组的,多行的函数。这些函数能在select或select的having子句中使用,当用于select子串时常常都和GROUP BY一起使用。多行函数分为接收多个输入,返回一个输出

一、单行函数

1、字符函数

 

1)、大小写控制函数

/*转小写*/
select lower('HELLOWORD') FROM DUAL;--helloword
/*转大写*/
select upper('helloword') FROM DUAL;--HELLOWORD
/*首字母大学*/
select initcap('hELLOword') FROM DUAL;--Helloword

2)、字符控制函数

/* 1、连接两个字符*/
select concat('str1','str2') from dual;--str1str2

/* 2、字符串截取,param1:要截取的字符串;param2:开始截取位置;param3:截取的个数*/
select substr('helloword',1,5) from dual;--hello

/* 3、判断字符串的长度*/
select length('holleworld') from dual;--10

/* 4、某一个字符串在另一个字符串中首次出现的位置,如果没有返回0*/
select instr('helloword','dd') from dual;--0
select instr('helloword','hello') from dual;--1

/* 5、左对齐
param1:填充的字符串
param2:填充之后的字符串长度,也就是该函数返回的字符串长度,如果这个数量比原字符串的长度要短,
       lpad函数将会把字符串截取成从左到右的n个字符
param3:填充字符串,是个可选参数,这个字符串是要粘贴到string的左边,如果这个参数未写,
       lpad函数将会在string的左边粘贴空格
*/
select lpad('hello',10,'#') from dual;--#####hello

/* 6、右对齐
参数和左对齐的含义一样*/
select rpad('hello',10,'#') from dual;--hello#####

/* 7、将一个字符从另一个字符中移除*/
select trim('H' from 'HELLOWORLD') from dual;--ELLOWORLD
select trim('A' from 'HELLOWORLD') from dual;--HELLOWORLD
select trim('H' from 'HELLOHWORLDH') from dual;--ELLOHWORLD

/* 8、替换函数
replace(param1,param2,param3),将param1中的param2替换成param3,将所有的param2都替换成param3
*/
SELECT REPLACE('helloword','o','O') FROM DUAL;--hellOwOrd

2、数字函数

/* 1、四舍五入*/
select round(123.456),round(123.556),round(123.456,2),round(435.45,-2),round(435.45,-5),round(435.45,5) from dual;
--123   124    123.46    400    0     435.45

/* 2、截断
param1为必要参数,是输入的一个日期值
param2参数可忽略,是日期格式
*/
/*1>、截取时间到年时,yyyy也可用year替换*/
select trunc(sysdate,'yyyy') from dual;  --2018/1/1

/*2>、截取时间到月时*/
select trunc(sysdate,'mm') from dual;--2018/4/1

/*3>、截取时间到日时*/
select trunc(sysdate,'dd') from dual;--2018/4/28

/*4>、截取时间到小时时*/
select trunc(sysdate,'hh') from dual;--2018/4/28 9:00:00

/*5>、截取时间到分钟时*/
select trunc(sysdate,'mi') from dual;--2018/4/28 9:48:00

/* 3、求余
 mod(nExp1,nExp2),即是两个数值表达式作除法运算后的余数
*/
select mod(10,3) from dual;--1

3、日期函数

1)、在日期上加上一个数或者减上一个数仍为日期;

2)、两个日期相减返回之间相差的天数,日期不允许做加法(没意义);

3)、用数字除24向日期中加上或者减上天数;

/*日期函数*/
select sysdate,sysdate+1,sysdate-3 from dual;
--2018/4/28 9:58:37
--2018/4/29 9:58:37
--2018/4/25 9:58:37

/*判断两个日志之间相差的月份*/
select months_between(sysdate,sysdate-35) from dual;--1.12903225806452

/*向指定的日期中加上若干个月*/
select add_months(sysdate,2),add_months(sysdate,-3) from dual;
--2018/6/28 10:03:05
--2018/1/28 10:03:05

/*当前日期开始得到到未来星期数的日期*/
select sysdate,next_day(sysdate,'星期日'),next_day(sysdate,'星期二'),next_day(sysdate,'星期六') from dual;
--2018/4/28 10:07:30
--2018/4/29 10:07:30
--2018/5/1 10:07:30
--2018/5/1 10:07:30

/*获取本月的最后一天*/
select last_day(sysdate) from dual;

/*其它日期处理*/
select round(sysdate,'month'),round(sysdate,'mm') from dual;--'month'和'mm'一样
--2018/5/1     2018/5/1
select round(sysdate,'year') from dual;--2018/1/1
select sysdate,trunc(sysdate,'year'),trunc(sysdate,'month') from dual;
--2018/4/28 10:12:26 
--2018/1/1
--2018/4/1

4、转换函数

分为隐式转换和显示转换,如图:

 

隐式类型转换:oracle自动完成下列的转换

源数据类型 目标数据类型
varchar2 or char number
varchar2 or char date
number varchar2
date varchar2

 

 

 

 

date  <======>varchar2<======>number

例如:

select '12'+2 from dual;--14
select sysdate+2 from dual;--2018/4/30 10:19:20
select 123,123,123.24+2 from dual;---123   123  125.24

显示类型转换:

/*char和date之间的转换*/
SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD') FROM DUAL;--2018-04-28
SELECT TO_DATE('2018-04-28','YYYY-MM-DD') FROM DUAL;--2018/4/28
SELECT TO_DATE('2018-04-28','YYYY/MM/DD') FROM DUAL;--2018/4/28
SELECT TO_char(sysdate,'YYYY"年"MM"月"DD"日"') FROM DUAL;--2018年04月28日

/*char和number之间的转换*/
SELECT TO_CHAR(1234567.89,'999,999,999.99') FROM DUAL;--1,234,567.89
SELECT TO_CHAR(1234567.89,'000,000,99.99') FROM DUAL;--012,345,67.89
SELECT TO_CHAR(1234567.89,'000,000,999.99') FROM DUAL;-- 001,234,567.89
SELECT TO_CHAR(1234567.89,'$00,000,999.99') FROM DUAL;-- $01,234,567.89
/*(本地的钱符号)*/
SELECT TO_CHAR(1234567.89,'L00,000,999.99') FROM DUAL;--¥01,234,567.89

to_char()函数对数字的转换过程中,下面是to_char()函数经常用到的几种格式:

9 数字
0
$ 美元
L 本地货币符号(用local理解)
. 小数点
, 千位符号

 

 

 

 

 

 

to_number('¥001,234,567,89','L000,000,99.99')可以做运算,我想如果你在美国,就要将¥换成$了;

 

posted @ 2018-04-28 10:54  飞鸿踏雪泥xp  阅读(345)  评论(0编辑  收藏  举报