概念
函数是计算程序中一段预先设置好的功能,可以满足反复调用的需求。
函数三要素
输入参数
需要什么数据
函数名称
给函数起个名字,方便调用
返回值
处理后的结果是什么
字符串函数
概念
用于处理TEXT类型的数据。
大小写转换函数
UPPER
输入参数
英文的字符串
作用
转换大写
返回值
转换大写后的字符串
LOWER
输入参数
英文的字符串
作用
转换小写
返回值
转换小写后的字符串
例子
1
SELECT UPPER('Hello'),LOWER('Hello');
2
select lower(ename),lower(job) from emp;
TRIM()函数
输入参数
字符串
作用
去除字符串前后空格
返回值
处理后的字符串
例子
SELECT TRIM(' hello world ');
数字函数
ROUND()函数
输入参数
输入参数1:数字
输入参数2:保留的小数位,可省略,省略默认为保留整数位
作用
四舍五入
返回值
四舍五入后的数字
例子
SELECT ROUND(123.456,2);
MOD()函数
输入参数
输入参数1:被除数
输入参数2:除数
作用
求模
返回值
计算后的数字
例子
SELECT MOD(10,4);
ABS()函数
输入参数
数字
作用
绝对值
返回值
取绝对值之后的数字
例子
SELECT ABS(-23);
日期函数
DATE()函数
输入参数
符合格式的日期时间字符串
作用
只提取日期
返回值
只包含日期的字符串
例子
SELECT DATE(hiredate) FROM emp;
TIME()函数
输入参数
符合格式的日期时间字符串
作用
只提取时间
返回值
只包含时间的字符串
DATETIME()函数
输入参数
符合格式的日期时间字符串
作用
提取时间和日期
返回值
包含日期和时间的字符串
3.2 获取本地时间
作用
使用DATETIME、DATE或TIME提取本地时区的当前时间和日期
参数
参数换为以下两个参数
输入参数1:‘now’
输入参数2:‘localtime’
例子
SELECT DATE('now','localtime'),TIME('now','localtime'),DATETIME('now','localtime')
FROM emp;
说明
上面的函数还可以省略第二个参数’localtime’,表示基于国际标准时间(格林威治时间)。
儒略日
概念
儒略日(Julian Day)是公元前4713年1月1日。
JULIANDAY()函数
输入参数
'now’或一个日期
作用
计算机输入日期与儒略日的差值,单位天
返回值
相差的天数,精确到小数
例子
SELECT ename,(JULIANDAY('now')-JULIANDAY(hiredate))/365 FROM emp;
说明
也可以直接使用日期作差
STRFTIME()函数
作用
时间格式化
输入参数
输入参数1:
格式
输入参数2
基于哪个日期时间
返回值
提取的数据,需要注意返回的数据是文本,例如’12’
例子
1
-- 注意STRFTIME返回值的TEXT,文本与文本比对,更改为'01'
SELECT * FROM emp WHERE STRFTIME('%m',hiredate)='01';
-- 也可以把等号左边数值变为数字
SELECT * FROM emp WHERE CAST(STRFTIME('%m',hiredate) AS DECIMAL)=01;
2
SELECT STRFTIME('%H:%M',TIME('now','localtime'));
- 查询在上半年雇佣的雇员信息。
- 查询在每个月1号雇佣的雇员信息。
- 查询在1981年雇佣的雇员信息。
空值函数
IFNULL()函数
概念
任何数字与NULL进行数学计算,结果同化为NULL
空值函数可以把NULL等效为某个数字
输入参数
输入参数1
可能为空的数据
输入参数2
等效数字
函数作用
如果参数1为NULL,则替换为参数2的等效数字
如果参数1不为NULL,则不替换
返回值
处理后的数字(NULL等效后的数字或者原数字)
例子
1.错误语句
SELECT ename,sal+comm FROM emp;
2正确语句
SELECT ename,sal+ifnull(comm,0) FROM emp;
统计函数
常用统计函数
COUNT()计数函数
COUNT(*)
表示使用所有列作为一条数据有效性的依据,即一条数据只要有任何一列有数据,就参与计数。
COUNT(列名)
不会对输入列出现NULL的情况计数,重复的数据分别计数。
COUNT(DISTINCT 列名)
只统计输入列不重复数据的次数
SUM()求和函数
AVG()平均值函数
MAX()最大值
MIN()最小值函数
说明
这五个函数输入参数是一些数据列(通常是数字类型,COUNT可支持非数字类型)
返回值是统计后的数字
例子
SELECT MAX(hiredate),MIN(hiredate) FROM emp;
SELECT MAX(sal) FROM emp WHERE deptno=20;
SELECT MAX(sal) FROM emp WHERE job='MANAGER';
SELECT AVG(sal) FROM emp WHERE job='SALESMAN';
SELECT COUNT(*) FROM emp WHERE job='CLERK';