单行函数
例:concat,length等,最后会有一个返回值。
字符函数
- length:获取参数字节个数(utf-8为一字节,CJK为3字节)
- concat:拼接字符串
- upper、lower:大写字母,小写字母
- substr、substring:提取对应索引的子字符串
SELECT SUBSTR('阿珍爱上了阿强',6);
#一个参数截取指定索引处后面所有字符
SELECT SUBSTR('阿珍爱上了阿强',3,3);
#两个参数截取指定索引处指定长度字符
- left、right:从左、从右开始截取子字符串(left(str, length))
- instr:返回子串第一次出现的索引,如果找不到返回0。instr(字符串,子串)
- trim:可以删去字符串中的空格,或其它指定字符
SELECT TRIM(' cigar ') AS out_put;
SELECT TRIM('k' FROM 'kkkkkkkkkcigarkkkkkkkk') AS out_put;
- lpad:用指定字符左填充指定长度
SELECT LPAD('cigar',8,'*') AS out_put;
#最后输出为:***cigar
- rpad:类似实现右填充
- replace:用指定子串替换指定子串
SELECT REPLACE('周芷若周芷若周芷若张无忌爱上周芷若周芷若','周芷若','赵敏') AS out_put;
#输出:赵敏赵敏赵敏张无忌爱上赵敏赵敏
数学函数
- round:四舍五入,round(对象,小数点后保留位数),默认保留位数为0
- ceil:向上取整
- floor:向下取整
- truncate:截断,和round一样也有两个参数,后一个是小数点后保留位数
- mod:取余(取模),和%用法一致
日期函数
参数类型为日期类型,用于处理日期
- now:返回当前系统日期+时间
- curdate:返回当前系统日期
- curtime:返回当前系统时间
- year, month, day, hour, minute, second:返回指定的年,月,日,小时,分钟,秒
- str_to_date:将日期格式的字符转换成指定格式的日期
SELECT STR_TO_DATE('9-13-1999', '%m-%d-%Y');
#输出:1999-09-13
-
datediff:用于计算日期的差值(date1-date2)
DATEDIFF(timeinterval,date1,date2 [, firstdayofweek [, firstweekofyear]])
其中timeinterval 表示相隔时间的类型,代码为:年份 yy、yyyy;季度 qq、q;月份 mm、m;每年的某一日 dy、y;日期 dd、d;星期 wk、ww;工作日 dw;小时 hh;分钟 mi、n;秒 ss、s;毫秒 ms。 -
timediff:用于计算时间的差值(time1-time2)
最后返回一个时间格式的结果00:00:00 -
timestampdiff(interval, stamp1, stamp2)——最实用!
返回(stamp2-stamp1)的时间差,结果单位由interval参数给出,如下:
-
date_format:将日期转换为字符
SELECT DATE_FORMAT(NOW(),'%y年%m月%d日') AS out_put;
#输出:22年02月11日
其它函数
- version:查看当前版本
- database:查看当前数据库
- user:查看当前用户
流程控制函数
- if函数
IF(判断条件, exp1, exp2)
#exp1为成立时返回的值,exp2为不成立时返回
- case函数
case函数有两种用法:
第一种用法
#case用法一(比较适合于等于判断):
case 要判断的字段或表达式
when 常量1 then 要显示的值1 或 语句1;
when 常量2 then 要显示的值2 或 语句2;
......
else 要显示的值n或语句n;
end
注:
- case本身既可以用作表达式,也可以单独作为语句
- 表达式时then后面不可接语句
- then后面是值时不要加分号
例子:查询员工工资要求:部门号为30,40,50的员工工资分别为1.1,1.2,1.3倍,其他人不变。
#case作为表达式
SELECT department_id,salary,
CASE department_id
WHEN 30 THEN salary*1.1
WHEN 40 THEN salary*1.2
WHEN 50 THEN salary*1.3
ELSE salary
END AS 工资
FROM employees;
第二种用法:适合区间判断
#case用法二
case
when 条件1 then 要显示的值1或语句1
when 条件2 then 要显示的值2或语句2
......
else 要显示的值n或语句n
end
分组函数
用作统计,传入一组数后经过处理返回一个值,又称统计函数。
分类:sum, avg, max, min, count
- count,max和min支持日期和字符作为参数
- sum,avg,max,min,count在运算时均忽略null值
- 和distinct搭配使用,如:select sum(distinct(salary));
count函数
- count(*)用于统计行数(用得多)
- count(1)也同样可以统计行数,1可以是任何其它字符或数字
- 和分组函数一同查询的字段要求是group by后的字段
SELECT AVG(salary),employee_id FROM employees;
#两个长度不一致会报错