1.length 获取参数值的字节个数
SELECT LENGTH('join');#3
#一个汉字在utf8字符集中占3个字节
SELECT LENGTH('张三丰');#9
#查看当前数据库字符集
SHOW VARIABLES LIKE '%char%';
2.concat 拼接字符串
SELECT CONCAT(last_name,'_',first_name) AS fullName FROM employees;
3.upper,lower
SELECT UPPER('henry');
SELECT LOWER(last_name) FROM employees;
4.substr 、 substring
注:索引从1开始
#截取从指定索引处后面所有字符
SELECT SUBSTR('床前明月光',3);#明月光
#截取从指定索引处指定字符长度的字符
SELECT SUBSTR('床前明月光',2,2);#前明
5. instr 返回字符串第一次出现的索引,找不到就返回0
SELECT INSTR('窗前明月光','明月');#3
6. trim ①去除字符创首尾的空格 ② 替换字符串首尾的指定字符
SELECT LENGTH(TRIM(' abc '));//3
SELECT LENGTH(TRIM(' a b c '));//5
SELECT TRIM('a' FROM 'a窗前明a月a光a');//窗前明a月a光
7.lpad 用指定的字符实现左填充指定长度
SELECT LPAD('bbb',5,'a');#aabbb
8.rpad用指定的字符实现右填充
9.replace 替换
SELECT REPLACE('aaaaabbbbaaaa','a','b');# bbbbbbbbbbb
1 round 四舍五入
SELECT ROUND(1.55);#2
SELECT ROUND(1.45);#1
SELECT ROUND(1.456,2);#1.46 小数点后保留2位
2 向上取整,返回>=该参数的最小整数
SELECT CEIL(1.02);# 2
SELECT CEIL(-1.02);# -1
3 floor 向下取整,返回 <= 该参数的最大整数
SELECT FLOOR(1.02);# 1
SELECT FLOOR(-1.02);# -2
4 truncate 截断,截取小数点后的几位,如果是整数则返回原数
SELECT TRUNCATE(1.5999,1); #1.5
SELECT TRUNCATE(1.5999,2); #1.59
5 mod取余
SELECT MOD(4,2);# 0
SELECT MOD(4,3);#1
1 now 返回当前系统的日期+时间
SELECT NOW(); # 2020-06-09 07:58:44
2 curdate 返回仓前系统日期,不包含时间
SELECT CURDATE();# 2020-06-09
3 curtime 返回当前时间,不包含日期
SELECT CURTIME(); # 08:01:16
4 year,month,monthname,hour,second 获取指定的部分日期
SELECT YEAR(NOW());# 2020
SELECT YEAR('1988-05-26');# 1988
SELECT MONTH(NOW());# 6
SELECT MONTHNAME(NOW());# June
SELECT HOUR(NOW());# 8
SELECT MINUTE(NOW());# 6
SELECT SECOND(NOW()); # 19
5 str_to_date 将字符串通过指定格式转化成日期
SELECT STR_TO_DATE('1993-02-25','%Y-%c-%d') AS output;# 1993-02-25
6 date_format 将日期转换成字符串
SELECT DATE_FORMAT(NOW(),'%Y-%m-%d') AS output;# 2020-06-09
SELECT VERSION();//获取当前数据库版本
SELECT DATABASE();//获取当前所在数据库
SELECT USER();//获取连接当前数据库的用户
# 1 if函数:if else 效果
SELECT IF(10>5,'10','5');
SELECT last_name,commission_pct ,IF(commission_pct IS NULL,'没奖金,呵呵','有奖金,哈哈') 是否有奖金 FROM employees;
# 2 case 语句
语法1:
case 要判断的字段或表达式
when 常量1 then 要显示的值或语句1;
when 常量2 then 要显示的值2或语句2;
....
else 要显示的值n或语句n;
end ...;
#查询员工工资,要求,部门号30显示工资为1.1倍,部门号40显示工资的1.2倍,部门号50,显示工资的1.3倍
SELECT salary 原工资,department_id,
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;
语法2:和1的区别是when后面不是常量而是表达式
case 要判断的字段或表达式
when 条件1 then 要显示的值或语句1;
when 条件2 then 要显示的值2或语句2;
....
else 要显示的值n或语句n;
end ...;
SELECT salary,
CASE salary
WHEN salary>20000 THEN 'a'
WHEN salary>15000 THEN 'b'
WHEN salary>10000 THEN 'c'
ELSE 'D'
END AS 工资等级
FROM employees;
分类:sum求和,avg平均值,max最大值,min最小值,count计算个数
特点:
1.sum avg一般用于处理数值型,max,min,cout可以处理任何类型
2.以上分组都忽略null值
3.可以和distinct搭配实现去重的运算
4.count函数,一般使用count(*)用作统计行数
count(任意常量)都可以统计行数
SELECT COUNT(*) FROM employees; #统计employees中有多少条记录
SELECT SUM(salary)FROM employees;
SELECT SUM(DISTINCT salary)FROM employees;
SELECT AVG(salary)FROM employees;
SELECT MIN(salary)FROM employees;
SELECT MAX(salary)FROM employees;