- 函数
1,字符函数
- initcap();将单词中的第一个字母大写,其他字母变为小写返回
- Lower():将所有字符转小写
- Upper():将所有字符转大写
- Ltrim():去掉左面的特定字符
ltrim(x,y) 函数是按照y中的字符一个一个截掉x中的字符,并且是从左边开始执行的,只要遇到y中有的字符, x中的字符都会被截掉, 直到在x的字符中遇到y中没有的字符为止函数命令才结束
- Rtrim():去掉右面的特定字符
- translate(string,from_str,to_str);替换,from_str中出现几个String,to_str最多就能替换几个
- replace():替换字符串
- instr()
instr函数返回要截取的字符串在源字符串中的位置。只检索一次,也就是说从字符的开始到字符的结尾就结束。
- Substr(): 格式1: substr(string string, int a, int b);截取字符串,从第a个开始,往后截取b个
或者: 格式2:substr(string , int a) ; 从第a个截取到底
- Concat():字符串拼接
2,日期函数:
日期函数对日期值进行运算,生成日期数据类型或数值数据类型的结果
- add_months ():
add_months 有两个参数,第一个参数是日期,第二个参数是对日期进行加减的数字(以月为单位的)
sysdate代表当前日期
- months_between():
MONTHS_BETWEEN函数返回两个日期之间相差的月份数。
如果前面日期早,就返回正数,如果前面的日期迟,就返回负数
- last_day:查询一个月的最后一天
- next_day():
指定时间的下一个星期几(由char指定)所在的日期,
char也可用1~7替代,1表示星期日,2代表星期一。。。。
还可以是星期一、星期二。。。星期日
- sysdate():当前日期
select next_day(sysdate,1) from dual;
3,数字函数:
-
Abs(n):返回一个数的绝对值
-
Ceil(n):向上取整
-
Cos(n):cos余弦函数,里面不是多少度,而是几分之π这种类型
-
cosh(n):返回输入值的反余弦值
-
floor(n):去小于等于数值n的最大整数
-
power(m,n):求m的n次方
-
mod(m,n):取余
-
round(m,n):将m四舍五入,保留n位有效数字
-
trunc(m,n):Oracle中的trunc()函数是对时间类型或者数字进行截取操作的
-
它的截取是以小数点为间隔,1就是小数点后1为,0就是只要整形,-1就是小数点左面的整数个位换成0
-
sqrt(n):开方
-
sign(n): 若n=0,则返回0,否则,n>0,则返回1,n<0,则返回-1
4,转换函数 -
to_char()转成字符串
其他用法:
-
to_date():转成日期类型
-
to_number();转数字
5,分析函数:
- 分析各个部门工资最高的两个人:
Over():oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是对于每个组返回多行,而聚合函数对于每个组只返回一行。
Row_num():row_number() 别名获得排名 ,比用rownum伪列要简单方便的多;因为伪列总是从一开始查找;
select empno,ename,sal,sum(sal) over() from emp;
按照常理来说,sum(sal)对于每一列的数据是不能统计的,因为它统计出来的数据是一个值,但是加上over()就可以把它的统计数据给每一列。
这样只是把所有人的工资数统计出来给了每一列,但是还要根据部门分组
select empno,ename,sal,sum(sal) over(order by sal) from emp;
这样是每一行统计一次
select a.* from
(select deptno,ename,sal,row_number() over(partition by deptno order by sal desc)as xx from emp)a
where xx<=2