Oracle(函数)
一、什么是sql函数?
函数:用于执行数据处理和复杂运算的,
通常对一组数据进行一系列运算,最终得到一个结果。
二、函数的分类
1.单行函数:每过去一条记录作为函数的参数,得到这条记录对应的单个结果
select name,length(age) from users;
2.多行函数:一次性把多个记录当做函数的参数,得到多条记录对应的单个结果
select max(sal) from users;
三、单行函数的分类
1.数值函数
2.字符函数
3.日期类型
4.转换函数
5.其他函数
数值函数
roud(四舍五入到什么位)、trunc(截至到什么位)、mod(求余)
字符函数
大小写转换:lower(转小写)、upper(转大写)、initcap(第一个字符大写,其余小写)
字符处理函数:concat、substr、length、instr、lpad|rpad、replace
--lower(转小写)
select from users where lower(name) ='zhangsan';
--concat:连接两个字符串;相当于||合并列
select concat(name,age) from users;
--substr:在name中,从第一个开始,取2个字符
select substr(name,1,2) from users;
--length:求长度
--instr:搜索指定字符,返回位置
select instr(name,'s') from users;
--lpad(name,10,''):name长度没有达到10,左填充*;rpad(name,10,'#'):name长度没有达到10,右填充#
--replace:替换
日期函数
--显示格式:年-月-日
--使用格式:日-月-年
--当前时间关键字:sysdate
--两个日期相减得到相差的天数
--months_between:两日期相差多少月
--add_months:在一个日期加上若月得到新的日期
--next_day:从现在开始,获取指定星期几对应的日期
--last_day:获取指定月份的最后一天的日期
--round:四舍五入接近的日期
函数转换
1.自动转换
2.手动转换
数值型
字符型
日期型
--to_char(date,'YYYY-MM-DD HH24:MI:SS AN') //把日期转换为字符
--to_char(number,'fmt')//把数字转换为字符
--to_number(varchar,'ftm')//把字符型的数据转为数值
--to_date(varchar,'ftm')//把字符转为日期类型
其他函数
--nvl(c1,c2):如果c1为null,就用c2代替
--nvl2(expr,expr1,expr2):判断expr如果不为null,返回expr1,为null返回expr2
--nullif(expr1,expr2):比较两个表达式,相等返回空值,不等返回expr1
case实现if...else if...else的功能
select name,age,
case job
where 'clerk' then 1.10sal
where 'manager' then 1.3sal
where 'salesman' then 1.45*sal
else e.sal
end as "修订工资数" from users where enane ="smith";
decode和case差不多
select name,age,
decode(job
'clerk' , 1.10sal ,
'manager' , 1.3sal,
'salesman' , 1.45*sal,
e.sal)as "修订工资数"
from users where enane ="smith";
组函数
1.avg
2.count
3.max
4.min
5.sum
注意:
avg、sum只能针对数值
max、min、count可以针对任何类型的数据。
所有的组函数都忽略空值。
组函数可以嵌套,最多嵌套两层,嵌套时必须配合使用group by。
group by 分组
--group by:对数据进行分组
注意:对分组以后的数据进行过滤,不能使用where子句,要使用having子句
--select max(sal) from users group by having max(sal)>=3000;
--首先用where对数据进行过滤,过滤后的数据用group by分组,分组后的数据用having再过滤,过滤后的数据再用order by 进行排序

浙公网安备 33010602011771号