SQL函数带有一个或者多个参数且一定有返回值
SQL函数包括单行函数、分组函数、分析函数三大类
一、单行函数 对于从表中查询的每一行只返回一个值
可以出现在select子句和where子句中
分类:
1、字符函数
ASCII函数 :返回给定字符的ASCII码值
CHR函数 : 返回指定ASCII码值的字符
select ascii('a'),chr(65)from dual;
SUBSTR(string,start,count)函数:获取源字符串从start位置起得 count个字符
select substr('abcdef',2,3) from dual;
NVL(字段,值):假如字段为空值 则用值代替它
select sal,comm,sal+nvl(comm,0) as sum from emp;
NVL2(字段,value1,value2):假如字段为空,则返回value2,若不为空,则返回value2
select sal,comm,nvl2(comm,comm,1) from emp;
NULLIF(字段,value):假如字段中的值为value,则赋为空
select comm,nullif(comm,300) from emp;
LENGTH(string):字符串的长度
select length('abcd') from dual;
select comm,length(comm) from emp;
INITCAP(string):首字母大写
select initcap('helLo')from dual;
UPPER(string):全部转换成大写
select upper('Hello') from dual;
LOWER(string):全部转换成小写
select lower('heLLO')from dual;
CONCAT(string1,string2):合并两个字符串
select concat('a','b') from dual;
REPLACE(string1,char1,char2):将指定字符串中char1字符用char2 (单个或者多个)字符代替
select replace('hello','h','b')from dual;
select replace('hello','h','bb')from dual;
LPAD(string,count,char):如果string不够count位,则在string的左 边用char补齐count位
select lpad('bbb',5,'a') from dual;
RPAD(string,count,char):如果string不够count位,则在string的右 边用char补齐count位
select rpad('bbb',5,'a') from dual;
LTRIM(string,char):如果char中任意一个字符出现在string左边,就去掉
select ltrim('abcdef','ac') from dual;
select ltrim('abcdef','acb') from dual;
RTRIM(string,char):如果char中任意一个字符出现在string右边,就去掉
select rtrim('abcdef','df') from dual;
select rtrim('abcdef','fed') from dual;
2、数字函数
ABS(value):返回value的绝对值
select abs(-1) from dual;
CEIL(value):返回大于或等于value的最小整数
select ceil(4.0) from dual;
select ceil(4.1) from dual;
select ceil(4.5) from dual;
FLOOR(value):返回小于或等于value的最大整数
select floor(4.0) from dual;
select floor(4.1) from dual;
select floor(4.9) from dual;
ROUND(value,precious):按精度四舍五入
select round(4.77,0) from dual;
select round(4.77,1)from dual;
TRUNC(value,可选参数):按精度截断
select trunc(4.77,0) from dual;
select trunc(4.77,1) from dual;
select trunc(4.1,0) from dual;
select trunc(4.77,-1) from dual;
MOD(value1,divisor):取余
select mod(3,2) from dual;
SQRT(value):返回value的平方根
select sqrt(4) from dual;
POWER(value,exponent):返回value的exponent的指数值
select power(2,3) from dual;
3、日期函数
ADD_MONTHS(date,count) 指定日期加上count个月
--15个月后是什么时候
select add_months(sysdate,15) from dual;
SYSDATE() 获取当前系统日期
4、转换函数
TO_DATE(2015-10-12'','YYYY-MM-DD') 将字符串类型转换成日期类型
select to_date('2015-11-08','yyyy-mm-dd');
TO_CHAR(date,'yyyy-mm-dd') 将日期类型转换成字符串类型
select to_char(sysdate,'yyyy-mm-dd') from dual;
TO_NUMBER('1234') 将字符串转换成数字
select to_number('1234') from dual;
二、分组函数 对整个结果集进行处理,不能与字段、单行函数一起用
select ename,sum(sal) from emp;//错误
1、SUM 函数:求和
select sum(sal) from emp;
2、AVG 函数:求平均值
select avg(sal) from emp;
3、MAX 函数:求最大值
select max(sal) from emp;
4、MIN 函数:求最小值
select min(sal) from emp;
5、COUNT 函数:统计数据(count()括号里面可以是*也可以是字段名)
select count(*) from emp;
select count(deptno) from emp where deptno=10;
分组函数经常与分组语句连用
select deptno,sum(sal) from emp group by deptno;
三、分析函数
row_number:得到连续的数字
rank:相同的值排位相同,随后跳跃
dense_rank:相同的值排位相同,随后接着往后排
select empno,ename,sal,row_number() over(order by sal) from emp;
select empno,ename,sal,rank() over(order by sal desc) from emp;
select empno,ename,sal,dense_rank() over(order by sal desc)from emp;