Mysql函数

MySQL -函数

常用字符串函数SELECT...

函数

功能

CONCAT(S1,S2....Sn)

字符串拼接

LOWER(str)

将字符串str全部改成小写

UPPER(str)

将字符串str全部改成大写

LPAD(str,n,pad)

左填充,用字符串pad对str的左边进行填充,达到n个字符串长度

RPAD(str,n,pad)

右填充,用字符串pad对str的右边进行填充,达到n个字符串长度

TRIM(str)

去掉字符串头部和尾部的空格

SUBSTRING(str,start,len)

返回从字符串str从start位置起的len个长度的字符串

实例:

-- CONCAT拼接字符串

select CONCAT('hello', 'MySQL');

-- lower 全部转换小写

select lower('HELLO');

-- upper 全部转换大写

select upper('hello');

-- lpadz 左填充

select lpad('01',5,'-');

-- rpad 右填充

select rpad('01',5,'-');

-- TRIM  去掉字符串头部和尾部的空格

select trim(' HELLO world ');

-- SUBSTRING 返回从字符串str从start位置起的len个长度的字符串

select SUBSTRING('HELLO MYSQL',1,5);

练习:由于业务需求变更,企业员工的工号,统一为5位数,目前不足5位数的全部在前面补0。比如: 1号员工的工号应该为00001

update emp set wordno = lpad(wordno ,5,'0');

常用数值函数

函数

功能

CEIL(X)

向上取整

FLOOR(X)

向下取整

MOD(X,Y)

返回x/y的模

RAND()

返回0~1内的随机数

ROUND(X,Y)

求参数X的四舍五入的值,保留Y位小数

实例:

-- ceil() 向大取整

select ceil(1.2);

-- floor() 向下取整

select floor(1.2);

-- mod(x,y) 返回x/y的模(取余)

select MOD(5,2);

-- rand();

select rand();

-- round(X,Y)求参数X的四舍五入的值,保留Y位小数

select round(5.4556,2);

-- 通过数据库的函数,生成一个六位数的随机验证码。

select lpad(ceil(rand()*1000000),6,0);

MySQL--日期函数

函数

功能

CURDATE()

返还当前日期

CURTIME()

返还当前时间

NOW()

返还当前日期和时间

YEAR(DATE)

获取指定date的年份

MONTH(DATE)

获取指定date月份

DAY(DATE)

获取指定DATE的日期

DATE_ADD(DATE,INTERVAL EXPR TYPE)

返回一个日期/时间加上一个时间间隔expr后的时间值

DATEDIFF(DATE1,DATE2)

返回起始时间DATE1和结束时间DATE2之间的天数

实例 :

-- CURDATE()当前日期

select CURDATE();

-- CURTIME() 当前时间

SELECT CURTIME();

-- NOW()

SELECT NOW();

-- YEAR,MONTH,DAY获取指定date的年/月/日

SELECT YEAR(NOW());

SELECT MONTH(NOW());

SELECT DAY(NOW());

-- DATE_ADD(DATE,INTERVAL EXPR TYPE) 往后推的时间

SELECT DATE_ADD(NOW(),INTERVAL 70 DAY);

SELECT DATE_ADD(NOW(),INTERVAL 70 MONTH);

SELECT DATE_ADD(NOW(),INTERVAL 70 YEAR);

-- DATEDIFF(DATE1,DATE2) 两日期的差别

SELECT DATEDIFF(NOW(),'2020-11-11');

案例:查询所有员工的入职天数,并根据入职天数倒叙排序。

select name , datediff(now(),entrydate) as '入职天数'

from emp

order by '入职天数' desc;

流程控制函数

流程控制函数在SQL语句中实现条件筛选,从而提高语句的效率

函数

功能

IF(value,t,f)

如果value为true,则返回t,否则返回f

IFNULL(value1,value2)

如果value1不为空,返回value,否则返回value2

CASE WHEN [val1] THEN [res1] ... ELSE [default] END

如果value为true,返回res1,...否则返回default默认值

CASE [expr] WHEN [val1] THEN [res1] ... ELSE [default] END

如果expr的值等于val1,返回res1, ... 否则返回default默认值。

-- IF()

SELECT IF(TRUE,'OK','ERROR');

-- IFNULL(1,2)如果第一个值不为空就返回第一个值,否则返回第二个值

SELECT IFNULL('OK','DEFAULT');

SELECT IFNULL('','DEFAULT');

SELECT IFNULL(NULL,'DEFAULT');

-- case when then else end

-- 需求:查询emp表的员工姓名和年龄(18 --->刚成人 ,20 ---> 成人两年了,其他---> 其他)

select name,case age when 18 then '刚成人' when 20 then '成人两年了' else '其他' end

from emp;

案例:

统计班级冬个些员的成绩,展示的规则如下:>= 85展不优秀;>= 60,展示及格,否则展示不及格

select name,grade,case when grade >= 85 then '优秀' when grade >= 60 then '及格' else '不及格' end as'是否及格'

from emp;

你可能感兴趣的:(mysql,数据库)