mysql⾏号函数_【笔记】MySQL-常见函数
⼀、单⾏函数
——字符函数
length、concat、upper、lower、substr、instr、trim、lpad、rpad、replace
——数学函数
round、ceil、floor、truncate、mod、rand
——⽇期函数
now、curdate、curtime、year、month、monthname、day、hour、minute、second、str_to_date、date_format、datediff ——其他函数
version、database
——控制函数
if、case
⼆、分组函数
sum、avg、max、min、count
概念:类似Python的函数,将⼀组逻辑语句封装在函数体中,对外暴露函数名。此处学习的是系统定义好的内置函数,直接调⽤即可。好处:1、隐藏了实现细节,直接使⽤,不⽤关注内部实现;2、提⾼了代码的重⽤性
调⽤⽅法:select 函数名(实参列表) ;
分类:1、单⾏函数;如concat、length。给⼀个值,返回⼀个值。
2、分组函数;做统计使⽤,⼜称为统计函数、聚合函数、组函数。给⼀组值,经过统计或处理返回⼀个值。
单⾏函数
1.字符函数
(1)length(str):获取参数值的字节个数
SELECT LENGTH('join')四舍五入函数保留整数
》4
(2)concat(str1,str2,...):拼接字符串
SELECT CONCAT(studentId,'_',studentName) FROM student;
(3)upper(str),lower(str):将字符串改为⼤写/⼩写
SELECT CONCAT(UPPER(studentName),'+',LOWER(studentName)) FROM student;
(4)substr/substring:分割字符串
注意:MySQL中索引从1开始
SUBSTR(str,pos):截取pos开始后⾯所有字符,包含pos
SELECT SUBSTR('⼀⼆三四五六七',3)
-》三四五六七
SELECT SUBSTR(str,pos,len):截取pos处开始指定len长度的字符
-- 从第三位开始取3个字符SELECT SUBSTR('⼀⼆三四五六七',3,3)
-》三四五
-- 姓名中⾸字母⼤写,其他⼩写SELECT
CONCAT(UPPER(SUBSTR(studentName,1,1)),LOWER((SUBSTR(studentName,2))))
FROM student;
-》Betty
(5)INSTR(str,substr):返回⼦字符串substr在字符串str中的起始索引;多个返回第⼀个索引,不到返回0;
SELECT INSTR('⼀⼆三四五六七','⼆');
-》2
(6)trim([remstr FROM] str):去掉字符串⾸尾remstr字符串,省略则去掉⾸尾空格,类似Python中的strip;
SELECT TRIM(' nihao ');
-》nihao
SELECT TRIM('a' FROM 'aaaabbbbbccccaaaa');
-》bbbbbcccc
SELECT TRIM('1112' FROM '111234');
-》34
(7)lpad(str,len,padstr)/rpad(str,len,padstr):左边/右边填充指定字符padstr达到总长度为len;若str长度超过len,则右侧部分截断(⽆论lpad还是rpad都是截断右侧);
SELECT LPAD('⼀⼆三四五六七',10,'*');
-》***⼀⼆三四五六七
SELECT LPAD('⼀⼆三四五六七',5,'*');
-》⼀⼆三四五
SELECT rPAD('⼀⼆三四五六七',10,'ab');
-》⼀⼆三四五六七aba
(9)replace(str,str1,str2):把str字符串中的str1全部替换为str2;
SELECT REPLACE('⼤宝⼤宝爱上了⼩宝⼩宝','⼤宝','⼆宝');
-》⼆宝⼆宝爱上了⼩宝⼩宝
2.数学函数
(1)round(X,D):四舍五⼊函数,把X四舍五⼊,保留D位⼩数,D省略则四舍五⼊为整数,负数也可以四舍五⼊,按照绝对值四舍五⼊后取负数;
SELECT ROUND(1.23);
-》1
SELECT ROUND(1.56);
-》2
SELECT ROUND(1.5655,2);
-》1.57
SELECT ROUND(-1.5655,2);
-》1.57
(2)ceil(X): 向上取整,返回>=该参数的最⼩整数,负数也是同样;SELECT CEIL(1.5);
-》2
SELECT CEIL(1.00);
-》1
SELECT CEIL(-1.50);
-
》-1
(3)floor(X):向下取整,返回<=该参数的最⼩整数,负数也同样;SELECT FLOOR(-1.50);
-》-2
SELECT FLOOR(1.50);
-》1
(4)truncate(X,D):截断X,⼩数点后保留D位;
SELECT TRUNCATE(1.699,1);
-》1.6
SELECT TRUNCATE(-1.699,1);
-》-1.6
(5)mod(N,M):取余数,同N%M;
SELECT MOD(10,3);
-》1
SELECT 10%3;
-》1
SELECT MOD(-10,3);
-》-1
(6)rand():获取随机数,返回0-1之间的⼩数
3.⽇期函数
(1)now():返回当前的系统⽇期+时间
SELECT NOW()
-》2020-03-04 11:22:51
(2)curdata():返回当前⽇期,不包含时间
SELECT CURDATE()
-》2020-03-04
(3)curtime():返回当前时间,不包含⽇期
SELECT CURTIME()
-》11:24:38
(4)获取指定的部分,年、⽉、⽇、⼩时等
SELECT YEAR(CURDATE());# 获取年份
-》2020
SELECT YEAR(NOW());
-》2020
SELECT YEAR('1998-1-5');
-》1998
SELECT MONTH('1998-1-5');# 获取⽉份
-》1
SELECT MONTHNAME('1998-1-5');#获取英⽂⽉份
-》January
SELECT DAY('1998-1-5');# 获取⽇期
-》5
SELECT DAYNAME('2020-3-6');# 获取⽇期的星期⼏
-》Friday
SELECT HOUR(NOW());#获取⼩时
-
》11
SELECT MINUTE(NOW());#获取分钟
SELECT SECOND(NOW());#获取秒
(5)(常⽤)str_to_data(str,format):将⽇期格式的字符转换成指定格式的⽇期SELECT STR_TO_DATE('9-13-98','%m-%d-%y');
-》1998-09-13 (6)data_format(date,format):将⽇期转换成字符
SELECT DATE_FORMAT(NOW(),'%y年%m⽉%d⽇')
-》20年03⽉04⽇
(7)datediff(expr1,expr2):返回expr1⽇期和expr2的⽇期差的天数;SELECT DATEDIFF('20170509','20180509');
-》-365
SELECT DATEDIFF(NOW(),'1995-1-1');
->>9194
4.其他函数(使⽤较少)
(1)version():查看版本号
SELECT VERSION();
-》8.0.17
(2)database():查看当前使⽤数据库
SELECT DATABASE();
-》school
(3)user():查看当前⽤户
SELECT USER();
->root@localhost
5.流程控制函数
(1)if(expr1,expr2,expr3)函数:if else效果,条件1expr1为true,返回expr2,False返回expr3;SELECT IF(10>5,'⼤','⼩');
-》⼤
(2)case函数使⽤1:适⽤于等值判断;case可以作为⼀个表达式使⽤,也可以作为⼀个语句
#case语法
case 要判断的字段或表达式
when 常量1 then 要显⽰的值1或语句1;#值后⽆需加;
when 常量2 then 要显⽰的值2或语句2;
...
else 要显⽰的值或语句;
end
案例:(case作为⼀个表达式)
#查询员⼯的⼯资,要求部门号=30,显⽰⼯资为1.1倍
#部门号=40,⼯资为1.2倍
#其他部门为原⼯资
select salary as 原始⼯资,department_id,
-----
case department_id
when 30 then salary*1.1
when 40 then salary*1.2
else salary
end as 新⼯资
-
----
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论