MySQL函数解析

什么是函数

函数就是一段可以直接被另一段程序调用的程序或代码

字符串函数

MYSQL中有很多内置的字符串函数,常用的有以下几种

函数

功能

CONCAT(S1,S2,......Sn)

字符串拼接,将S1,S2...拼接成一个字符串

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个长度的字符串

使用方法:

语法:

select 函数();

concat:

select concat('Hello',' Mysql');

输出结果: Hello Mysql

lpad:

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

输出结果: ---01

实例:

1、由于业务变更,企业员工的工号,统一为5位,目前不足5位的在前面补0,如,1号应该为00001,

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

数值函数

常见的数值函数

函数

功能

CEIL(x)

向上取整

FLOOR()

向下取整

MOD(x/y)

返回x/y的模

RAND()

返回0~1内的随机数

ROUND(x,y)

求参数x的四舍五入的值,保留y位小数

使用方法:

select ceil(1.1)

输出结果:2

select mod(7/4) 求模就是算余数是多少

输出结果:3

实例:

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

select lpad(round(rand()*1000000 , 0 ) , 6 , '0');

rand可能生成0.0324213,就变成5位了,所以要补0

日期函数

常见的日期函数

函数

功能

CURDATE()

返回当前日期

CURTIME()

返回当前时间

NOW()

返回当前日期和时间

YEAR(date)

获取指定date的年份

MONTH(date)

获取指定date的月份

DAY(date)

获取指定date的日期

DATE_ADD(date,INTERVAL EXPR type)

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

DATEDIFF(date1,date2)

返回起始时间date1和结束时间date2之间的天数

使用方法:

select curdate();

输出结果:当前年月日

select YEAR(now());

输出结果:当前年份;

select date_add(now(), INTERVAL 70 DAY)

输出结果:当前时间往后推70天

select datediff('2021-10-01', '2022-10-01')

输出结果:两个日期相差的天数

###(差值第一个时间减去第二个时间,如果第一个比第二个大,输出结果为负数)

例子:

查询所有员工的入职天数,并根据入职天数倒序排序

select name,datediff(curdate(), entrydate) as 'entrydays' from emp order by entrydays desc;

流程控制函数:

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

函数

功能

IF(value, t, f)

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

IFNULL(value1, value2)

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

CASE WHEN[ val 1] 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', 'cuo')

输出:cuo

ifnull

select ifnull('OK' , 'Default')

输出:OK

select ifnull(' ' , 'Default')

输出:

select ifnull(null , Default)

输出:Default
解释:ifnull只有当第一个为Null,才会输出第二个,否则,即使为空,也会输出空

case when then else end

查询emp的员工姓名和工作地址(北京、上海---->一线城市,其他----->二线城市)

select

name,

(case workaddress when '北京' then '一线城市' when '上海' then '一线城市' else '二线城市' end ) as '工作地址'

from emp;

实例:

给一个成绩表,判断学生成绩是优秀还是及格

select

id,

name,

(case when math >= 85 then '优秀' when math >= 60 then '及格' else '不及格' end) '数学',

(case when english >= 85 then '优秀' when english >= 60 then '及格' else '不及格' end) '英语',

(case when chinese >= 85 then '优秀' when chinese >= 60 then '及格' else '不及格' end) '语文'

from score;

  • 28
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猿究院-Cu-Sn合金

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值