SQL单行函数

SQL单行函数

20171029

17:19

格式:返回值 函数名称(参数)

单行函数按类型分为:

  • 字符串函数
  • 数值函数
  • 日期函数
  • 转换函数
  • 通用函数

字符串函数

 

函数名称

描述

1

字符串 UPPER( | 字符串)

将传入的字符串变为大写字母形式

2

字符串 LOWER( | 字符串)

将传入的字符串变为小写字母形式

3

字符串 INITCAP( | 字符串)

开头首字母大写,其他的字母全部变为小写

4

数字 LENGTH( | 字符串)

取得指定字符串的长度

5

字符串 SUBSTR( | 字符串 , 开始索引 , [长度])

进行字符串的截取,如果没有设置长度,表示从开始索引一直截取到结尾

6

字符串 REPLACE( | 字符串 , 旧内容 , 新内容)

将指定字符串的数据以新数据替换旧数据

统一将内容转换成需要的格式

  • SELECT UPPER('hello') FROM dual ;
  • SELECT LOWER('hello') FROM dual ;

首字母大写其他字母小写

  • SELECT ename , INITCAP(ename) FROM emp ;

获取字符串的长度

  • SELECT LENGTH('helloworld!!!') FROM dual ;
  • SELECT * FROM emp WHERE LENGTH(ename) = 5 ;

字符串截取

从指定位置截取到结尾:SYBSTR( | 字符串 , 开始索引 )

截取部分内容:SYBSTR( | 字符串 , 开始索引 , [长度)

Oracle里面,所有字符串首字母的索引都是1,如果设置的是0,也会按照1的方式来处理。

  • SELECT SYBSTR('HELLOWORLD') FROM dual

截取3个字符:

3

  • SELECT ename , SUBSTR(ename,1,3) FROM emp ;

3

  • SELECT ename , SUBSTR(ename,LENGTH(ename)-2) FROM emp ;
  • SELECT ename , SUBSTR(ename,-3) FROM emp ;

 

 

数值函数

No

函数名称

描述

1

数字 ROUND( | 数字 [, 小数位])

实现数据的四舍五入,可以设置保留小数位

2

数字 TRUNC( | 数字 [, 小数位])

实现数据的截取,即:不进位

3

数字 MOD( | 数字 , | 数字])

求模

 

ROUND函数:如果没有设置小数点,那么会直接不保留小数点进行进位;

如果设置了小数点就会在指定的小数位上实现四舍五入;

如果为负,表示进行整数位的进位。

  • SELECT ROUND(129.23233) FROM dual ;
  • SELECT ROUND(129.23233,2) FROM dual ;
  • SELECT ROUND(129.23233,-2) FROM dual ;

 

  • SELECT TRUNC(132.3124132) FROM dual ;
  • SELECT TRUNC(132.3124132,2) FROM dual ;
  • SELECT TRUNC(132.3124132,-2) FROM dual ;

 

  • SELECT MOD(10,3) FROM dual ;

 

日期函数

伪列:SYSDATE,SYSTIMESTAMP

  • SELECT SYSDATE FROM dual ;
  • SELECT SYSTIMESTAMP FROM dual ;

SYSDATE伪列里面包含了有日期时间内容;(11-1 -17

三个日期操作公式:

  • 日期 + 数字 =日期 (表示若干天之后的日期);
  • 日期 - 数字 =日期 (表示若干天之前的日期);
  • 日期 - 日期 = 数字 (天数);
  • SELECT SYSDATE-7,SYSDATE+120 FROM dual ;

由于每个月的天数不一样,直接用天数不准;

  • SELECT ename SYSDATE-hiredate FROM emp ;

为了准确地进行日期操作,Oracle提供有四个日期处理函数:

No

函数

 

1

日期 ADD_MONTHS( | 日期 , 月数)

在指定的日期上增加若干个月之后的日期

2

数字 MONTHS_BETWEEN( |日期 , |日期)

返回两个日期之间所经历的月数

3

日期 LAST_DAY( | 日期)

取得指定日期所在月的最后一天

4

日期 NEXT_DAY( | 日期 , 星期x)

返回下一个指定的一周时间数对应的日期

转换函数

No

函数名称

描述

1

字符串 TO_CHAR( | 数字 , 转换格式)

将日期或数字格式化为指定结构的字符串

2

日期 TO_DATE( | 字符串 , 转换格式)

按照指定的转换格式编写字符串后将其变为日期型数据

3

数字 TO_NUMBER( | 字符串)

将字符串变为数字

1、转字符串函数:TO_CHAR()

  • 日期:年(yyyy)、月(mm)、日(dd);
  • 时间:时(hhhh24)、分(mi)、秒(ss);
  • 数字:任意数字(9)、本地货币符号(L)。

2、转日期函数:TO_DATE()

  • SELECT TO_DATE('1889-10-19' , 'yyyy-mm-dd') FROM dual ;

3、转数字函数TO_NUMBER()

  • SELECT TO_NUMBER('1') + TO_NUMBER('2) FROM dual

Oracle里面已经默认提供了许多的自动转换机制。

通用函数:Oracle特色函数(2个)

No

函数名称

描述

1

数字 NVL( | NULL , 默认值)

如果传入的内容是null,则使用默认数值处理,如果不是空则使用原始数值处理。

2

数据类型 DECOME( | 字符串 | 数值,比较内容1,显示内容1,比较内容2,显示内容2[,默认显示内容])

设置的内容会与每一个比较内容进行比较,如果内容相同,则会使用显示内容进行输出,如果都不相同,则使用最后的默认显示内容输出。

1、处理null函数

  • SELECT empno,ename,sal,comm,(sal+comm)*12 FROM emp ;
  • 如果commnull,则sal+comm也为null;需将null替换为0
  • SELECT empno,ename,sal,comm,(sal+NVL(comm,0))*12 FROM emp ;

2DECODE()函数

SELECT ename , job , DECODE(job , 'CLERK' , '办事员' , 'SALESMAN' , '销售员' '---')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值