码迷,mamicode.com
首页 > 数据库 > 详细

oracle-单行函数

时间:2018-04-28 11:51:20      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:cap   next   数据   ==   height   concat   美国   har   字符串截取   

oracle函数分为单行函数和多行函数

一、单行函数

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‘)可以做运算,我想如果你在美国,就要将¥换成$了;

 

oracle-单行函数

标签:cap   next   数据   ==   height   concat   美国   har   字符串截取   

原文地址:https://www.cnblogs.com/hjwq/p/8966380.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!