oracle 内置函数

摘要:
若起始位置为0,返回值为0。selectinstrfromdual;--返回1410.lpadlpad函数从左边对字符串使用指定的字符进行填充。从其字面意思也可以理解,l是left的简写,pad是填充的意思。lpadstring准备被填充的字符串;padded_length填充之后的字符串长度,也就是该函数返回的字符串长度,如果这个数量比原字符串的长度要短,lpad函数将会把字符串截取成从左到右的n个字符;pad_string填充字符串,是个可选参数,这个字符串是要粘贴到string的左边,如果这个参数未写,lpad函数将会在string的左边粘贴空格。

oracle内置函数分为单行函数和聚合函数两大类

1、to_date

将字符转换为日期

select to_date('2008-08-08','yyyy-mm-dd') from dual; --2008/8/8

2.add_months

增加月份

select add_months(sysdate,2) from dual; --当前时间向后推2个月,精确到秒

select add_months(sysdate,-2) from dual;--当前时间向前推2个月,精确到秒

3.trunc

按照指定的精度截取一个数

/***********************日期***************************/
1.select trunc(sysdate) from dual --2017-02-07 今天的日期为2017-02-07
2.select trunc(sysdate, 'mm') from dual --2017-02-01 返回当月第一天.
3.select trunc(sysdate,'yy') from dual --2017-01-01 返回当年第一天
4.select trunc(sysdate,'dd') from dual --2017-02-07 返回当前年月日
5.select trunc(sysdate,'yyyy') from dual --2017-01-01 返回当年第一天
6.select trunc(sysdate,'d') from dual --2017-02-05 (星期天)返回当前星期的第一天
7.select trunc(sysdate, 'hh') from dual --2017-02-05 14:00:00 当前时间为14:49
8.select trunc(sysdate, 'mi') from dual --2017-02-05 14:49:00 TRUNC()函数没有秒的精确

/***********************数字***************************/

9.select trunc(123.458) from dual --123
10.select trunc(123.458,0) from dual --123
11.select trunc(123.458,1) from dual --123.4
12.select trunc(123.458,-1) from dual --120
13.select trunc(123.458,-4) from dual --0
14.select trunc(123.458,4) from dual --123.458
15.select trunc(123) from dual --123
16.select trunc(123,1) from dual --123
17.select trunc(123,-1) from dual --120

4.last_day

返回指定日期当月的最后一天

select last_day(to_date('2008-08-08','yyyy-mm-dd')) from dual;--2008/8/31

5.nvl(a1,a2)

如果第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第一个参数本来的值。

select nvl(null,2) from dual;--返回2

select nv(0,2) from dual;--返回0

select nvl(1,2) from dual;返回1

6.NVL2(E1, E2, E3)

如果E1为NULL,则函数返回E3,若E1不为null,则返回E2

select nvl2 (null,2,3)from dual;--返回3

select nvl2 (1,2,3)from dual;--返回2

7.decode

decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)

该函数的含义如下:
IF 条件=值1 THEN
RETURN(翻译值1)
ELSIF 条件=值2 THEN
RETURN(翻译值2)
......
ELSIF 条件=值n THEN
RETURN(翻译值n)
ELSE
RETURN(缺省值)
END IF

decode(字段或字段的运算,值1,值2,值3)

这个函数运行的结果是,当字段或字段的运算的值等于值1时,该函数返回值2,否则返回值3
当然值1,值2,值3也可以是表达式,这个函数使得某些sql语句简单了许多

select decode(1,2,3,4) from dual;--返回4

select decode(2,2,3,4) from dual;--返回3

8.concat

字符连接

select concat('adc','cba')from dual;--返回adccba

9.instr

INSTR(源字符串, 要查找的字符串, 从第几个字符开始, 要找到第几个匹配的序号)

返回找到的位置,如果找不到则返回0. 默认查找顺序为从左到右。当起始位置为负数的时候,从右边开始查找。若起始位置为0,返回值为0。

select instr('chineseisgoodithink','i',2,3)from dual;--返回14

10.lpad

lpad函数从左边对字符串使用指定的字符进行填充。从其字面意思也可以理解,l是left的简写,pad是填充的意思。

lpad( string, padded_length, [ pad_string ] )

string

准备被填充的字符串;

padded_length

填充之后的字符串长度,也就是该函数返回的字符串长度,如果这个数量比原字符串的长度要短,lpad函数将会把字符串截取成从左到右的n个字符;

pad_string

填充字符串,是个可选参数,这个字符串是要粘贴到string的左边,如果这个参数未写,lpad函数将会在string的左边粘贴空格。

select lpad('women',9,'ni')from dual;--niniwomen

select lpad('women',2)from dual;--wo

10.ltrim

去掉字符两边的空格

select ltrim('108224323', '108')from dual;--224323

select ltrim('10810081224323', '108')from dual;--2234323

select ltrim('10810081210824323', '108')from dual;--210824323

ltrim(x,y) 函数是按照y中的字符一个一个截掉x中的字符,并且是从左边开始执行的,只要遇到y中有的字符, x中的字符都会被截掉, 直到在x的字符中遇到y中没有的字符为止函数命令才结束 .

11.replace

replace(char,search_string,replacement_string)

char : 等待替换的字符串
search_string : 搜索需要替换的字符串
replacement_string : 替换字符串

select replace('nihenlihai','ni','wo') from dual;--wohenlihai

12.substr

substr(字符串,截取开始位置,截取长度) //返回截取的字

select substr(' hong kong ',1,4)from dual;--hong

13.translate

TRANSLATE(string,from_str,to_str)

返回将(所有出现的)from_str中的每个字符替换为to_str中的相应字符以后的string。

select translate(' hong kong ','on','un')from dual;--hung kung

如果 from_str 比 to_str 长,那么在 from_str 中而不在 to_str 中的额外字符将从 string 中被删除,因为它们没有相应的替换字符。

select translate(' hong kong ','ong','un')from dual;--hun kun

如果TRANSLATE 中的任何参数为NULL,那么结果也是 NULL。

select translate(' hong kong ',null,'un')from dual;--null

免责声明:文章转载自《oracle 内置函数》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇1-5.引入样式Java String类型数据的字节长度下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

【转】70个经典的 Shell 脚本面试问题

我们为你的面试准备选择了 70 个你可能遇到的 shell 脚面问题及解答。了解脚本或至少知道基础知识对系统管理员来说至关重要,它也有助于你在工作环境中自动完成很多任务。在过去的几年里,我们注意到所有的 linux 工作职位都要求脚本技能。 1) 如何向脚本传递参数 ? ./script argument 例子 : 显示文件名称脚本 ./show.sh...

3.开始使用Spring Cloud实战微服务

                 开始使用Spring Cloud实战微服务 3.1. Spring Cloud实战前提               3.1.1. 需要的技术储备                   语言方面:可以使用Java、scala、Groovy...等等,推荐使用Java                   构建工具方面:Java...

ORA-12560: 解决TNS:协议适配器错误

1)安装成功,但无法连接数据库 2)网上查找原因:32位的不能运行64位的oracle,而且不会有64位的版本 3)解决办法:大致是修改客户端数据库为32位的(此方法OK)(1)解压instantclient-basic-nt-11.2.0.3.0.rar,把里面的instantclient_11_2文件夹复制到D:appproductinstantcli...

Spring学习笔记(14)——SpEL

是什么 Spring表达式语言全称为“Spring Expression Language”,缩写为“SpEL”,类似于Struts2x中使用的OGNL表达式语言,能在运行时构建复杂表达式、存取对象图属性、对象方法调用等等,并能与Spring功能完美整合。 表达式语言给静态Java语言增加了动态功能。 SpEL是单独模块,只依赖于core模块,...

AOP+自定义注解实现全局参数校验

AOP+自定义注解实现全局参数校验 在开发过程中,用户传递的数据不一定合法,虽然可以通过前端进行一些校验,但是为了确保程序的安全性,保证数据的合法,在后台进行数据校验也是十分必要的。 后台的参数校验 在controller方法中校验: 后台的参数是通过controller方法获取的,所以最简单的参数校验的方法,就是在controller方法中进行参数校验。...

C# 将RTF文档保存到SQLITE当中

表的结构 CREATE TABLE [DATA_TBL]( [ID] VARCHAR PRIMARY KEY, [TITLE] TEXT, [RTF] BINARY, [TAG] TEXT); using System.Data.SQLite; string ConnectionString = "Data Source = test.db; Ve...