MySQL函数:函数是指可以直接被另一段程序调用的程序或者代码;函数一般都已经内置;

1. 字符串函数

(1) concat(s1,s2,s3…) 字符串拼接函数,将s1,s2,s3… 拼接成一个字符串;使用逗号分隔;

(2) lower(str) 将字符串str 全部转为小写;

(3) upper(str) 将字符串str 全部转为大写;

(4) lpad(str,n,pad) 左填充,用字符串pad 对str的左边进行填充,直到达到n个字符串的长度;【n:总长度,控制字符串总长度】

(5) rpad(str,n,pad) 右填充,用字符串pad对str的右边进行填充,直到达到n个字符串的长度;【n:总长度,控制字符串总长度】

(6) TRIM(str) 去掉字符串头部和尾部的空格,不去掉中间的空格;

(7) substring(str,start,len) 截取函数:返回字符串str从start位置起的len个长度的字符串;

-- concat() 拼接
select concat('ab','cd','ef');

-- lower() 转小写
select lower('ABCd1');

-- upper() 转大写
select upper('abcD1');

-- lpad()左填充  -- 4123
select lpad('123',4,'456');

-- lpad()左填充  -- aba123 【如果填充后还不够会继续填充】 
select lpad('123',6,'ab');

-- rpad()右填充  -- 1234
select rpad('123',4,'456');

-- trim()去除空格
select trim(' 555 ');

-- substring 截取 -- 从第一个字符开始,总共截取3个字符  123
select substring('123456',1,3);
2. 数值函数

常见的数值函数:

(1) ceil(x) 向上取整; 取整数:5.66 -> 去掉少数点后面的数并加一 6

(2) floor(x) 向下取整;取整数:5.66 -> 去掉少数点后面的数并减一 5

(3) mod(x,y) 返回x/y的模; – 取余

(4) rand() 返回 0~1 内的随机数;

(5) round(x,y) 求参数x的四舍五入的值,保留y位小数;

-- 向上取整 -- 6
select ceil(5.66);

-- 向下取整 -- 5
select floor(5.66);

-- 返回x/y的模 也就是取余函数 5/2 余1 如果y=0 结果为null
select mod(5,2);

-- 返回0~1内的随机数
select rand();

-- 求参数x的四舍五入的值,保留y位小数 -- 5.7
select round(5.66,1);
3. 日期函数

常见日期函数:

(1) curdate() 返回当前日期;

(2)curtime() 返回当前时间;

(3)now() 返回当前日期和时间;

(4)year(date) 获取指定date的年份;

(5)month(date) 获取指定date的月份;

(6)day(date) 获取指定date的日期;

(7)date_add(date,INTERVAL expr type) 返回上一个日期/时间值加上一个时间间隔expr 后的时间值;【type :可以是年或月或日】

(8)datediff(date1,date2) 返回起始时间date1 和结束时间date2 之间的天数;

-- 当前日期
select curdate();

-- 当前时间
select curtime();

-- 当前日期与时间
select now();

-- 指定date的年份【可以是时间字符串】
select year('2022-09-24 01:12:07');

select year(now());

-- 指定date的月份
select month(now());

-- 指定date的日期
select day(now());

-- 上一个日期/时间值【加上】 一个时间间隔expr后的时间值
-- 当前时间加上3年
select date_add(now(),interval 3 year);

-- 当前时间加上3月
select date_add(now(),interval 3 month);

-- 当前时间加上3天
select date_add(now(),interval 3 day);

-- 返回起始时间和结束时间之间的天数 【前面的参数减去后面的参数】
-- 如果后面的日期大,结果为负数
select datediff(now(),'2022-09-23 01:12:07');
4. 流程函数

流程函数可以在SQL语句中实现条件筛选,提高语句的效率

常见流程函数:

(1) if(value,t,f) 如果value为true则返回t,否则返回f ;

(2) ifnull(value1,value2) 如果value1 不为空,返回value1,否则返回value2;

(3) case when [val1] then [res1] … else [default] end 如果【val1 为true】,返回res1 …否则返回default默认值;

(4) case [expr] when [val1] then [res1] …else[default] end 如果expr的值等于val1 ,返回res1 … 否则返回的default 默认值;

-- if() -- yes
select if(1=1,'yes','no');

-- ifnull() 判断第一个值是否为null,如果为null 则返回第二个值 -- 5
select ifnull(5,'OK');

-- OK
select ifnull(null,'OK');

-- case ... when ... then ... else ... end
 select
	case
		id when 1 then '第一个id'
		else '不是第一个id'
	end
from
	mysql_test.test_user_new;

-- case when .. then .. else .. end
 select
	case
		when id = 1 then '第一个id'
		else '不是第一个id'
	end
from
	mysql_test.test_user_new;