1. 概述
函数是指一段可以直接被另一段程序调用的程序或代码。
2. 字符串函数
- concat
-- concat
select concat ('Hello',' Mysql');
SELECT concat (u.username, r.name, p.name,p.desc) FROM user u LEFT JOIN user_role ur on u.id = ur.user_id LEFT JOIN role r ON r.id = ur.role_id
LEFT JOIN role_permission rp ON r.id = rp.role_id LEFT JOIN permission p ON p.id = rp.permission_id;
- lower
-- lower
select lower('Hello');
- upper
-- upper
select UPPER('Hello');
- lpad
-- lpad
select lpad('01',5,'-');
- rpad
-- rpad
select rpad('01',5,'-');
- trim
-- trim
select trim(' Hello Mysql ');
- substring
select SUBSTRING('hello mysql',1,5);
2.1 案例
3. 数值函数
- ceil
select ceil(1.5);
- floor
- mod
select mod(3,4);
- rand
select rand();
- round
select round(2.345,2);
3.2 案例
4.日期函数
- curdate 返回当前日期
SELECT curdate();
- curtime 返回当前时间
SELECT curtime();
- now 返回当前日期和时间
SELECT now();
- year(date)返回指定date的年份
SELECT year('2023-02-01 11:01:01');
- month(date) 获取指定date的月份
SELECT month('2023-02-01 11:01:01');
- day(date)获取指定date的日期
SELECT day('2023-02-01 11:01:01');
- date_add(date,INTERVAL expr type) 返回一个日期/时间值加上一个时间间隔expr后的时间值
SELECT date_add(now(), INTERVAL 70 DAY);
SELECT date_add(now(), INTERVAL 70 MONTH);
SELECT date_add(createtime, INTERVAL 70 DAY) FROM answer;
- datediff(date1,date2) 返回起始时间date1和结束时间date2之间的天数
SELECT DATEDIFF('2021-12-01','2021-11-01');
5.流程函数
IF(value,t,f)
如果value为true则返回t否则返回f
SELECT IF(true,'ok','error');
IFNULL(value1 ,value2)
如果value1不为空,返回value1否则返回value2
SELECT IFNULL(null,'1');
SELECT IFNULL('','1');
SELECT IFNULL('ok','1');
3. CASE WHEN [val1] THEN [res1] ... ELSE[default] END
如果val1为true,返回res1, … 否则返回default默认值
======》课程
补充案例
附录
1.Mysql课程