目录
函数
分类:
- 分组函数:将一组值进行统计,得出一个值。
- 单行函数:将一个值进行处理,得出一个值。
调用语句:
select 函数名(实参列表);
分组函数:
分组函数这一块在我的另一篇文章MySQL学习笔记-查询中讲解过,这里不做赘述,有兴趣的同学可以过去看一下。
单行函数:
1. 字符函数
常用字符函数:
- length:获取字节长度
SELECT LENGTH('abc张三');
- concat:拼接字符串
- upper:将小写字符转换成大写
- lower:将大写字符转换成小写
SELECT UPPER('ABC'); SELECT LOWER('ABC'); #案例:将姓转大写,名转小写,然后拼接 SELECT CONCAT(UPPER(last_name),' ',LOWER(first_name)) 姓名 FROM employees;
- instr:获取字串第一次出现的索引,索引从1开始,若找不到则返回0
SELECT INSTR('张三丰爱上了三丰的郭襄','杨过');
- substr:截取一段字符串
SELECT SUBSTR('郭襄爱上了杨过',6); SELECT SUBSTR('郭襄爱上了杨过',1,2);
- lpad:左填充
SELECT LPAD('尹志平爱上了',5,'*');
- rpad:右填充
- trim:去除前后空格或特殊字符
SELECT LENGTH(TRIM(' 小 龙 女 ')) 美女; SELECT TRIM('a' FROM 'aaaaaaaqqqqqq小qq龙q女qqqqqqqqqqqqqq') 美女;
2. 数学函数
常用的数学函数:
- ceil:
#向上取整,返回>=该参数的最小整数 SELECT CEIL(-1.0);
- floor:
#向下取整,返回<=该参数的最大整数 SELECT FLOOR(-1.0);
- round:
#四舍五入,先按绝对值四舍五入,然后加正负号 SELECT ROUND(-1.56); SELECT ROUND(1.537,1);
- rand:
#随机数,返回0-1之间的小数,不包含1 SELECT RAND(); #返回50-100 a——b floor(rand()*(b-a+1)+a) SELECT CEIL(RAND()*50+50); SELECT FLOOR(RAND()*51+50);
- truncate:
#截断 #返回1.9 SELECT TRUNCATE(1.99,1); #返回314 SELECT TRUNCATE(314.15,0); #返回310 SELECT TRUNCATE(314.15,-1);
3. 日期函数
常用的日期函数:
- now
#获取当前日期 SELECT NOW();
- curdate
#获取时间,没有日期 SELECT CURTIME();
- year
- month
- monthname
- day
#获取日期的指定部分 SELECT YEAR(NOW()); SELECT MONTH(NOW()); SELECT MONTHNAME(NOW()); SELECT DAY(NOW()); SELECT CONCAT(YEAR(NOW()),'年',MONTH(NOW()),'月',DAY(NOW()),'日') 日期;
- datediff
#判断两个日期的差别天数,前者比后者大,返回正数,小返回负数,相等返回0. SELECT DATEDIFF(NOW(),'2022-8-8'); SELECT DATEDIFF('2017-9-25',NOW());
4. 流程控制函数
常用的流程控制函数:
- if ...
SELECT IF(100>9,'不错呦','不够大') 备注;
- case when ...
#语法: #CASE #WHEN 条件1 THEN 显示的值1 #WHEN 条件2 THEN 显示的值2 #... #ELSE 显示的值n #END #类似于: #IF(条件1){ # 语句1; #}ELSE IF(条件2){ #}ELSE{ # #} #案例: SELECT salary, CASE WHEN salary>20000 THEN '购买汽车' WHEN salary>10000 THEN '购买手机' WHEN salary>5000 THEN '购买pad' ELSE '购买棒棒糖' END 购买资格 FROM employees;
- case ... when ...
#语法: # #CASE 字段或表达式 #WHEN 值1 THEN 显示的值1 #WHEN 值2 THEN 显示的值2 #... #ELSE 显示的值n #END # #类似于: #switch(变量或表达式){ # # CASE 值1 :语句1;break; # ... # DEFAULT:语句n;break; # #} #案例:查询部门和对应的级别 SELECT department_id, CASE department_id WHEN 10 THEN 'A' WHEN 20 THEN 'B' WHEN 30 THEN 'C' WHEN 50 THEN 'D' END 级别 FROM employees;