常见函数
概念:类似于java的方法,将一组逻辑语句封装在方法体中,对外暴露的方法名
好处:1.隐藏了实现细节 2.提高代码的重用性
调用:select 函数名(实体参数) 【from 表】;
分类:
1.单行函数
如 concat、length 、ifnull等
2.分组函数
功能:做统计使用,又称为统计函数、聚合函数、组函数
1.常见单行函数举例:
字符函数:
length、concat、substr、instr、trim
upper、lower、lpad、rapd、replace
数学函数:
round、ceil、floor、truncate、mod
日期函数:
row、curdate、curtime、year、month、monthname
day、hour、minute、second、datediff
str_to_date、date_format
其它函数:
version、database、user
控制函数:
if、case
单行函数详细例子说明:
一、字符函数
1.length 获取参数的字节个数:
SELECT LENGTH('学习mysql');
一个汉字占三个字节,一个字母一个字节
2.concat 拼接字符串:
SELECT CONCAT(name,'_',phone) FROM 表;
3.upper/lower 大小写转换:
SELECT UPPER('join'); 将参数变为大写
SELECT LOWER('JOIN'); 将参数变为小写
4.substr/substring 截取字符
4.1从索引截取剩余全部字符
SELECT SUBSTR('李莫愁爱上了花无期',7); 索引从1开始 值:花无期
4.2截取指定索引处开始,指定长度的字符
SELECT SUBSTR('李莫愁爱上了花无期',1,3); 值:李莫愁
5.instr(str1,str2)
返回str1中最早出现str2的位置 ,如果找不到返回0
SELECT INSTR('杨不悔爱上了殷六侠','殷六侠'); 值:1
6.lpad(str1,i,str2) 左填充
用指定的str2左填充str1到指定长度i
如果填充的长度i小于str1则从左向右截取str1中的i个字符
SELECT LPAD('殷素素',5,'*') AS output; 值:**殷素素
SELECT LPAD('殷素素',1,'*') AS output; 值:殷
7.rpad(str1,i,str2) 右填充
用指定的str2右填充str1到指定长度i
如果填充的长度i小于str1则从右向左截取str1中的i个字符
8.replace(str1,str2,str3) 替换
str3替换str1中的str2,如果存在多出str2,则全部替换
SELECT REPLACE('张无忌爱上了周芷若','周芷若','赵敏') output;
值:张无忌爱上了赵敏
二、数学函数
1.round 四舍五入
SELECT ROUND(3.14); 3
SELECT ROUND(3.54); 4
SELECT ROUND(-3.14); -3
SELECT ROUND(-3.54); -4
2.round(x,i) 四舍五入,x保留i位小数
SELECT ROUND(3.14,1); 3.1
3.ceil 向上取整,返回大于等于该参数的最小整数
SELECT CEIL(-3.14); -3
4.floor 向下取整,返回小于等于该参数的最大整数
SELECT FLOOR(-3.14); -4
5.truncate(num1,i) 截断函数,保留指定的小数位数
SELECT TRUNCATE(3.14,1); 3.1
6.mod(a,b) 取模/取余
被除数为正结果则为正,被除数为负,结果则为负
结果为:a-a/b*b a/b如果ab均为整数的话,则结果也为整数
SELECT MOD(10,3); 10%3=1
SELECT MOD(10,-3); 10%-3=1
SELECT MOD(-10,3); -10%3=-1
SELECT MOD(-10,-3); -10%-3=-1
三、日期函数
1.now 用于返回当前系统日期+时间
SELECT NOW();
2.curdate 返回当前系统的日期
SELECT CURDATE();
3.curtime 返回当前系统的时间
SELECT CURTIME(); 获取指定的部分:年、月、日、小时、分钟、秒
SELECT YEAR(NOW()); 显示年份SELECT
YEAR('1997-06-12'); 显示指定字符串中的年份
USE myemployees;
SELECT YEAR(hiredate)
FROM employees;
SELECT MONTH(NOW()); 显示当前月份
SELECT MONTHNAME(NOW()); 显示当前月份的英文名称
SELECT SECOND(NOW()); 显示当前时间的秒数
4.str_to_date(str1,str2)
将str1按照str2的格式进行解析日期
SELECT STR_TO_DATE('1997-06-12','%Y-%d-%m');
常见的格式符
5.date_formate 将日期转换为指定格式的字符
SELECT DATE_FORMAT(NOW(),'%Y年%m月%d日'); 2020年11月11日
6.datediff 返回两个日期相差的天数
SELECT DATEDIFF('2020-03-10','2017-03-08');
7.MONTHNAME(日期);以英文形式返回月
SELECT MONTHNAME('2020-11-2'); November
四、其它函数
SELECT VERSION(); #查看数据库的版本
SELECT DATABASE(); #查看当前数据库名称
SELECT USER(); #查看当前用户
SELECT PASSWORD('xxl'); #将字符进行加密
SELECT MD5('ll'); #将字符进行加密
五、流程控制函数
1、if函数:实现if…else功能
if(expr1,expr2,expr3) == expr1?expr2:expr3
2、case函数的使用二:多重 if 区间判断
java:
IF(条件1){语句1}
ELSE IF(条件2){语句2}
ELSE IF(条件n){语句n}
ELSE{语句n+1}
mysql:
CASE
WHEN 条件1 THEN 显示值1或语句1 注意:语句中需要加分号
WHEN 条件2 THEN 显示值2与语句2
ELSE 要显示的值n;
END 别名
SELECT last_name,salary,CASE
WHEN salary>20000 THEN 'A'
WHEN salary>15000 THEN 'B'
WHEN salary>10000 THEN 'C'
ELSE 'D'
END 级别
FROM employees;