SQL 常见函数总结(oracle版)

@[TOC]SQL 常见函数总结(oracle版)


前言

SQL 函数总结(oracle版)
总结一些oracle 常见的函数,本文以emp表为例。


一、字符函数:

1.字符串连接

concat()
连接字符串,等同于||
例如:
select concat('my name is ',ename) from emp
在这里插入图片描述
||
||也可实现
例如:
select 'my name is '||ename from emp
在这里插入图片描述

2.转换字母函数

initcap()
将字符串的首字母大写
例如:
select initcap(ename) from emp ;
在这里插入图片描述
upper()
将字符串全部转换为大写
例如:
select upper(ename) from emp ;
在这里插入图片描述

lower()
将字符串全部转为小写
例如:
select lower(ename) from emp
在这里插入图片描述

3.填充字符串函数

lpad()
左填充,
字段,位数,填充符号
例如:
select lpad(ename,10,’*’) from emp
在这里插入图片描述

rpad()
右填充
字段,位数,填充符号
例如:
select rpad(ename,10,’*’) from emp
在这里插入图片描述

4.去除空格函数

trim()
去除字符串左右两别空格
例如:
select trim(name),name from student t
在这里插入图片描述
注意:去除左右两边空格

ltrim()
去除字符串里左边空格
例如:
select trim(name),name from student t where t.id=2
在这里插入图片描述

rtrim()
去除字符串里右边空格
例如:
select trim(name),name from student t where t.id=3
在这里插入图片描述

5.查找字符串位置,长度

instr()
字段,查找字符
例如:
select instr(‘ABSDSV’,‘A’)from dual
在这里插入图片描述
length()
查找字段长度
例如:
select length(ename),ename from emp
在这里插入图片描述

6.字符串截取,替换

substr()
截取字符串
字段,开始位数,结束位数
例如:
select substr(ename,0,2),ename from emp
在这里插入图片描述

replace()
替换操作
字段,原字段被替换字符,替换字符
例如:
select replace(ename,‘A’,’*’),ename from emp
在这里插入图片描述

二、数值函数

1.四舍五入函数

round()
给小数进行四舍五入操作,指定小数部分位数
字段值,位数
例如:
select
round(123.123,2)NUM1,
round(123.128,2)NUM2,
round(-123.128,2)NUM3 from dual
在这里插入图片描述
trunc()
截断函数,按照位数去截断,不会四舍五入
字段值,截断位数
例如:
select trunc(123.128,2) from dual
在这里插入图片描述

2.取模函数

mod()
正负数取模
例如:
select
mod(10,4)NUM1,
mod(-10,4)NUM2 from dual
在这里插入图片描述

3.向上,向下取整函数

ceil()
向上取整
例如:
select ceil(12.12) from dual
在这里插入图片描述
floor()
向下取整
例如:
select floor(12.55) from dual
在这里插入图片描述

3.取绝对值函数

abs()
取绝对值
例如:
select abs(-100),abs(100) from dual
在这里插入图片描述

3.获取正负值函数

sign()
数字,若为正值返回1,负值返回-1,0返回0
例如:
select sign(-150),sign(100),sign(0) from dual
在这里插入图片描述

4.计算幂次函数

power()
x的y次幂
例如:
select
power(5,2) NUM1,
power(1.5,0)NUM2,
power(20,-1)NUM3 from dual;
在这里插入图片描述

三、日期函数

1.获取当前日期函数

sysdate
获取当前 年月日时分秒
例如:
select sysdate from dual
在这里插入图片描述
current_date
例如:
select current_date from dual
在这里插入图片描述

2.添加指定月份函数

add_months()
日期,增加月份
例如:
select sysdate,add_months(sysdate,2) from dual
在这里插入图片描述

3.获取输入日期月份最后一天函数

last_day()
例如:
select sysdate,last_day(sysdate) from dual
在这里插入图片描述

4.获取两个日期间隔月份函数

months_between()
日期1,日期2
例如:
select months_between(sysdate,sysdate-365) from dual
在这里插入图片描述

4.获取日期最近一天函数

round()
当前日期
(日期)最近零点日期
(日期,‘day’)最近星期日
(日期,‘month’)最近月初
(日期,‘q’)最近季初日期
(日期,‘year’)最近年初日期
例如:
select
sysdate date1,
round(sysdate)date2,
round(sysdate,‘day’)date3,
round(sysdate,‘month’)date4,
round(sysdate,‘q’)date5,
round(sysdate,‘year’)date6 from dual
在这里插入图片描述

5.返回下周的星期几函数

next_day()
日期,“星期几”
例如:
select
sysdate date1,
next_day(sysdate,‘星期一’)date2,
next_day(sysdate,‘星期五’)date3 from dual
在这里插入图片描述

6.提取时间年、月、日、时、分、秒值函数

extract()
(second from timestamp ‘日期字符串’) 秒
(minute from timestamp ‘日期字符串’) 分钟
(hour from timestamp ‘日期字符串’)小时
(DAY from timestamp ‘日期字符串’)日
(MONTH from timestamp ‘日期字符串’)月
(YEAR from timestamp ‘日期字符串’)年
例如:
select
extract(second from timestamp '2001-2-16 2:38:40 ’ ) 秒,
extract(minute from timestamp '2001-2-16 2:38:40 ’ ) 分钟,
extract(hour from timestamp '2001-2-16 2:38:40 ’ ) 小时,
extract(DAY from timestamp '2001-2-16 2:38:40 ’ ) 日,
extract(MONTH from timestamp '2001-2-16 2:38:40 ’ ) 月,
extract(YEAR from timestamp '2001-2-16 2:38:40 ’ ) 年
from dual
在这里插入图片描述

7.返回日期时间戳

localtimestamp
例如:
select localtimestamp from dual
在这里插入图片描述

current_timestamp
例如:
select current_timestamp from dual
在这里插入图片描述

8.给指定的时间单位增加数值

interval
–加1秒(1/24/60/60)
–加1分钟(1/24/60)
–加1小时(1/24)
–加1天(1)
–加1月
–加1年
–加指定小时到秒
–加指定分钟到秒
–加指定小时到分钟
–加指定天数到分钟
例如:
select
trunc(sysdate)+(interval ‘1’ second)time1,
trunc(sysdate)+(interval ‘1’ minute)time2,
trunc(sysdate)+(interval ‘1’ hour)time3,
trunc(sysdate)+(INTERVAL ‘1’ DAY)time4,
trunc(sysdate)+(INTERVAL ‘1’ MONTH)time5,
trunc(sysdate)+(INTERVAL ‘1’ YEAR)time6,
trunc(sysdate)+(interval ‘01:02:03’ hour to second)time7,
trunc(sysdate)+(interval ‘01:02’ minute to second)time8,
trunc(sysdate)+(interval ‘01:02’ hour to minute)time9,
trunc(sysdate)+(interval ‘2 01:02’ day to minute)time10 from dual
在这里插入图片描述
在这里插入图片描述

四、转换函数

1.转换字符串函数

to_char()
日期转字符串
例如:
select to_char(sysdate,‘yyyy-MM-dd hh24:mi:ss’) from dual
在这里插入图片描述
数字转字符串
数字,转化格式
–9.在小数位,则表示转换为对应字符,如果没有则以0表示;在整数位,没有对应则不填充字符.
–注意事项:对于0和9而言,如果格式的位数不如数字的位数多,会返回’#’.
譬如to_char(12345,‘9999’)=’#####’

例如:
select
123.456789 NUM0,
to_char(123.456789,‘99999’)NUM1,
to_char(123.456789,‘0000.00’)NUM2,
to_char(123.456789,’$0000.00’)NUM3,
to_char(123.456789,‘L0000.00’) NUM4,
to_char(123456789,‘999,999,999,999’)NUM5 from dual
在这里插入图片描述

2.转换日期函数

to_date()
字符串转日期
日期字符串,转化格式
例如:
select
to_date(‘199912’,‘yyyymm’)date1,
to_date(‘2000.05.20’,‘yyyy.mm.dd’)date2,
to_date(‘2008-12-31 12:31:30’,‘yyyy-mm-dd hh24:mi:ss’)date3 from dual
在这里插入图片描述

3.转换数字函数

to_number()
字符串转数字
数字字符串,转换格式
例如:
select
to_number(‘123456789’)NUM1,
to_number(‘1234,5678,9’,‘9999,9999,9’)NUM2 from dual
在这里插入图片描述

五、条件函数

同一个例子展现两个函数写法:
问题:给不同部门的人员涨薪,10部门涨10%,20部门涨20%,30部门涨30%,其他涨薪15%

1.decode函数

decode(条件,值1,翻译值1,值2,翻译值2,…值n,翻译值n,缺省值)
例如:
select ename,deptno,sal,decode(deptno,10,sal * 1.1,20,sal * 1.2,30,sal * 1.3,sal * 1.15)sal1 from emp 
在这里插入图片描述

2.case when函数

case [<表达式>]
when <表达式条件值1> then <满足条件时返回值1>
[when <表达式条件值2> then <满足条件时返回值2>
……
[else <不满足上述条件时返回值>]]
end
例如:
select ename, deptno, sal,
(case deptno when 10 then sal * 1.1
when 20 then sal * 1.2
when 30 then sal * 1.3
else sal*1.15 end)sal1 from emp
在这里插入图片描述

六、组函数

组函数,一般情况下,组函数都要和group by组合使用

1.求平均值函数

avg()
薪资平均值
例如:
select avg(sal) from emp
在这里插入图片描述

2.求最小值函数

min()
薪资最小值
例如:
select min(sal) from emp
在这里插入图片描述

3.求最大值函数

max()
薪资最大值
例如:
select max(sal) from emp
在这里插入图片描述

4.求和函数

sum()
薪资总和
例如:
select sum(sal) from emp
在这里插入图片描述

5.求数据总条数函数

count()
表数据总条数
例如:
select count(*) from emp
或select count(sal) from emp
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值