MySQL常见函数
函数的功能:提高重用性和隐藏实现细节
函数的调用:select 函数名(实参列表);
常见函数分类:单行函数,流程控制函数,分组函数
注:一般SQL关键字大写
一.单行函数
1.字符函数
1.length() #获取参数值的字节个数
eg.获取 oPlusman 的字节个数
select length("oPlusman"); #返回字节个数8
2.concat 拼接字符串
eg.拼接emps表姓与名,中间用‘_’分开
select concat(last_name,'_',first_name) 姓名 from emps;
3.upper、lower#字母大写,小写
eg.将姓变大写,名变小写,然后拼接
select concat(upper(last_name),lower(first_name)) 姓名 from emps;
4.substr截取指定字符
substr('字符串','开始截取索引',’、['截取长度']);
#注意:索引从1开始,与数组索引不同
eg.截取从指定索引处后面所有字符
select substr('老鼠爱大米',4); #返回‘大米’
eg.截取从指定索引处指定字符长度的字符
select substr('老鼠爱大米,大米不爱老鼠',3,4); #爱大米,
5.instr 返回子串第一次出现的索引,如果找不到返回0
#注意:索引从1开始,与数组索引不同
eg.
select instr('老鼠爱大米','大米');#返回 4
6.trim 默认去左右空格,也可以指定
eg.去除字符串左右空格
select trim(' 小米 ');
eg.去除指定左右相同字符
select trim('aa' from 'aaaaaaaaaaa大米aaaa大米aaaa'); #返回a大米aaaa大米 因为是从左右去除 ‘aa’ 左右a的个数为单数
7.lpad 【左】 rpad 【右】 用指定的字符实现左右填充指定长度
eg.中间参数表示显示的字符个数
select lpad('老鼠',12,'*');
8.replace 替换
eg. 大米全部替换成小米
select replace('老鼠爱大米,老鼠爱大米老鼠爱大米','大米','小米');
2.数学函数
1.round 四舍五入
SELECT ROUND(-1.55);
SELECT ROUND(1.567,2);
2.ceil 向上取整,返回>=该参数的最小整数
3.floor 向下取整,返回<=该参数的最大整数
4.truncate 截断
eg.参数2为截取小数点后几位
SELECT TRUNCATE(1.69999,1); #返回1.6
5.mod取余
3.日期函数
1.now 返回当前系统日期+时间
SELECT NOW();
2.curdate 返回当前系统日期,不包含时间
SELECT CURDATE();
3.curtime 返回当前时间,不包含日期
SELECT CURTIME();
4.可以获取指定的部分,年、月、日、小时、分钟、秒
SELECT YEAR(NOW()) 年;
SELECT MONTH(NOW()) 月;
SELECT MONTHNAME(NOW()) 月; #返回英语月份
SELECT hour(NOW()) 小时;
SELECT minute(NOW()) 分钟;
SELECT second(NOW()) 秒;
5.str_to_date 将字符通过指定的格式转换成日期
SELECT STR_TO_DATE(now(),'%Y-%c-%d');
6.date_format 将日期转换成字符
SELECT DATE_FORMAT(NOW(),'%y年%m月%d日');
注:格式
序号 | 格式符 | 功能 |
---|---|---|
1 | %Y | 四位的年份 |
2 | %y | 2位的年份 |
3 | %m | 月份(01,02…11,12) |
4 | %c | 月份(1,2,…11,12) |
5 | %d | 日(01,02,…) |
6 | %H | 小时(24小时制) |
7 | %h | 小时(12小时制) |
8 | %i | 分钟(00,01…59) |
9 | %s | 秒(00,01,…59) |
4.其他函数
version 当前数据库服务器的版本
database 当前打开的数据库
user当前用户
password('字符'):返回该字符的密码形式
md5('字符'):返回该字符的md5加密形式
5.流程控制函数
case函数的使用一 switch case 的效果
case 要判断的字段或表达式
when 常量1 then 要显示的值1或语句1;
when 常量2 then 要显示的值2或语句2;
...
else 要显示的值n或语句n;
end
case 函数的使用二:类似于 多重if
case
when 条件1 then 要显示的值1或语句1
when 条件2 then 要显示的值2或语句2
。。。
else 要显示的值n或语句n
end
二.分组函数
特点:
1.语法 select max(字段) from 表名;
2.支持的类型
sum和avg一般用于处理数值型
max、min、count可以处理任何数据类型
3.以下分组函数都忽略null
4.都可以搭配distinct使用,实现去重的统计
5.和分组函数一同查询的字段,要求是group by后出现的字段
max 最大值
min 最小值
sum 和
avg 平均值
count 计算个数
附加:
count(1):统计结果集的行数
count(*):统计结果集的行数
效率上:
MyISAM存储引擎,count(*)最高
InnoDB存储引擎,count(*)和count(1)效率>count(字段)