进阶四:常见函数
概念:类似一Java中的函数,将一组逻辑语句包装在方法中,对外暴露方法名.
好处:1,隐藏了实现细节 2,提高了代码的复用性
调用;select 函数名(实参列表) [from 表];
特点:
1)叫什么(函数名)
2)干什么(函数功能)
分类:
1)单行函数如:concat,length,ifnull…
2)分组函数
功能:做统计使用,又称为统计函数,聚合函数,组函数
一,单行函数(字符函数,数学函数,日期函数,流程控制函数,其他函数)
1)字符函数
a)length:显示字段的长度
语法:select length(‘john’);
注意:此函数显示字段的长度的时候,与字符集有关;可以用:show variables like ‘%char%’ 来获取字符集类型
补充:utf8:中文三个字节,英文一个字节.gbk:中文两个字节,英文一个字节.
2)concat:拼接字符串
语法:select concat (字段一,‘其他’,字段二);
注意:别名要放在concat的外面.
3)upper,lower:大小写的转换
语法:select upper/lower (‘需要转换的字段’);
4)substr,substring:分割字符串
语法:a)select substring (‘字段’,a) out_put;其中a代表所要截取的位置,输出a后面所有的字符.
b):select substr(‘字段’,a,b) out_put;其中 a代表起始位置,b代表从a开始往后的截取个数.
- instr:返回子串第一次出现的索引,如果找不到则返回0.
语法:select instr (‘字段’,‘子字段’) ;
6)trim:去掉首位的空格,或者去掉首尾指定的字符
a)去掉首尾空格语法: select trim(’ 和 ');
b)去掉首尾相同的字符(‘a’ from ‘aaaaaaaaaaaaa张三aaaaaaaaaaaaaaa’😉
7)lpad/rpad:用指定的字符实现左/右填充指定长度
语法:select lpad (‘张三’,10,’’),指定十个字符,左边不够的用填充.(右边也是一样的)
注意:如果字符数不够,则原字段被截断,lpad就从左边截断,rpad就从右边截断.
8)replace:替换指定的字段
语法:select replace(‘原始字段’,‘替换前选中的字段’,‘替换成的字段’);
二:数学函数:
1)round:四舍五入
语法:a)select round(1.65);
b)重载:b)select round(a,b),a为原始数据,b为需要保留的小数点位数.
2)ceil:向上取整(返回大于等于该数值的最小整数)
语法:select ceil();
floor 向下取整(返回小于等于该数的最大整数)
3)truncate:截断小数
语法:select truncate(1.2555,2);#截取小数点后两位.
4)mod:取模
语法:select mod(10,3);#10/3的余数和百分号一样
注意:如果有负数,则结果与被除数一致.
三:时间函数
1)now:返回当前时间.
语法:select now();
2)curdate:返回当前日期,不包含时间.
语法:select curdate();
3)curtime:返回当前时间,不含日期.
语法:select curtime();
4)获取系统时间的指定部分
语法:select year/month (传入一个时间).
ps;若使用monthname则返回一个英文月份
5)str_to_date:将日期格式的字符串转换成指定格式的日期.
语法:select str_to_date(‘9-13-1999’,’%m-%d-%y’) ; 1999-09-13.
6)date_format:将日期转换成字符
date_format(‘2018/6/6’,’%y年%ym月%d日’) 2018年06月06日
参考表:%Y:四位的年份
%y:两位的年份
%m:月份(01,02,03…)
%c:月份(1,2,3…)
%d:日(01,02,…)
%H:小时(24小时制)
%h:小时(12小时制)
%i:分钟(00,01…59)
%s:(秒00,01,…59)
四:其他函数(系统的函数)
1)select version();当前MySQL的版本号
2)select database();查看当前数据库
3)select user();查看当前用户.