> 文章列表 > MySQL常用函数 【字符串函数丨数值函数丨日期函数丨流程函数】

MySQL常用函数 【字符串函数丨数值函数丨日期函数丨流程函数】

MySQL常用函数 【字符串函数丨数值函数丨日期函数丨流程函数】

函数是指一段可以直接被另一段程序调用的程序或代码。MySQL已经提供了一些函数。

MySQL中的函数主要分为以下四类: 字符串函数、数值函数、日期函数、流程函数。

字符串函数

常用函数:

  • concat(S1,S2,...Sn):字符串拼接,将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个长度的字符串,索引值从1开始。
-- concat(S1,S2,...Sn):字符串拼接,将S1,S2,... Sn拼接成一个字符串
select concat('hello', 'mysql');-- lower(str):将字符串str全部转为小写
select lower('HELLO');-- upper(str):将字符串str全部转为大写
select upper('hello');-- lpad(str, n, pad):左填充,用字符串pad对str的左边进行填充,达到n个字符串长度
select lpad('hello', 20, ',');-- rpad(str, n, pad):右填充,用字符串pad对str的右边进行填充,达到n个字符串长度
select rpad('mysql', 10, '-');-- trim(str):去掉字符串头部和尾部的空格
select trim('  hello mysql  ');-- substring(str, start, len):返回从字符串str从start位置起的len个长度的字符串
select substring('hello mysql', 1, 5);

数值函数

常用函数:

  • ceil(x):向上取整。
  • floor(x):向下取整。
  • mod(x,y):返回x/y的模。
  • rand():返回0~1内的随机数。
  • round(x,y):求参数x的四舍五入的值,保留y位小数。
-- ceil:向上取整
select ceil(1.1);-- floor:向下取整
select floor(1.9);-- mod:取模
select mod(7,4);-- rand:获取随机数
select rand();-- round:四舍五入
select round(2.344,2);

日期函数

常用函数:

  • curdate():返回当前日期。
  • curtime():返回当前时间。
  • now():返回当前日期和时间。
  • year(date):获取指定date的年份。
  • month(date):获取指定date的月份。
  • day(date):获取指定date的日期。
  • date_add(date, INTERVAL expr type):返回一个日期/时间值加上一个时间间隔expr后的时间值。type可选年月日。
  • datediff(date1,date2):返回起始时间date1和结束时间date2之间的天数。
-- curdate:当前日期
select curdate();-- curtime:当前时间
select curtime();-- now:当前日期和时间
select now();-- YEAR , MONTH , DAY:当前年、月、日
select YEAR(now());
select MONTH(now());
select DAY(now());-- date_add:增加指定的时间间隔
select date_add(now(), INTERVAL 70 YEAR );--  datediff:获取两个日期相差的天数
select datediff('2021-10-01', '2021-12-01');

流程函数

流程函数也是很常用的一类函数,可以在SQL语句中实现条件筛选,从而提高语句的效率。

常用函数:

  • if(value , t , f):如果value为true,则返回t,否则返回f。
  • ifnull(value1 , value2):如果value1不为空,返回value1,否则返回value2。
  • case when [ val1 ] then [res1] ... else [ default ] end:如果val1为true,返回res1,… 否则返回default默认值。
  • case [ expr ] when [ val1 ] then [res1] ... else [ default ] end:如果expr的值等于val1,返回res1,… 否则返回default默认值。
-- if
select if(false, 'Ok', 'Error');-- ifnull
select ifnull('Ok','Default');
select ifnull('','Default');
select ifnull(null,'Default');--  case when then else end
-- 查询emp表的员工姓名和工作地址 (北京/上海 ----> 一线城市 , 其他 ----> 二线城市)
select name, (case workaddress when '北京' then '一线城市' when '上海' then '一线城市' else '二线城市' end) as '工作地址' 
from emp;

西交大教育在线