当前位置: 首页 > news >正文

MySQL常用函数

什么是函数?

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

字符串函数

函数功能
CONCAT(S1,S2,…Sn)字符串拼接,将S1,S2,… Sn拼接成一个字符串
LOWER(str)将字符串str全部转为小写
LOWER(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');


lpad : 左填充

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


rpad : 右填充

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


trim : 去除空格

select trim(' Hello MySQL ');


substring : 截取子字符串

-- 索引从1开始,而不是从0开始
select substring('Hello MySQL',1,5);


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

update employee set work_no = lpad(work_no,5,'0');

数值函数

函数功能
CEIL(x)向上取整
FLOOR(x)向下取整
MOD(x,y)返回x/y的模
RAND()返回0~1内的随机数
ROUND(x,y)求参数x的四舍五入的值,保留y位小数

ceil:向上取整

select ceil(0.1);


floor:向下取整

select floor(9.9);


mod:取模

select mod(11,3);

rand:获取随机数

select rand();


round:四舍五入

select round(3.1415926,2);


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

-- 思路分析:通过rand函数产生一个随机数,通过字符串截取小数点后的6为即可
select substr(rand(),3,6);
或者
-- 思路分析:通过rand函数产生一个随机数,乘以1000000后,再舍弃小数部分,由于可能出现前面0被舍去,再采用lpad补0
select lpad(round(rand() * 1000000, 0), 6, '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之间的天 数

curdate:当前日期

select curdate();


curtime:当前时间

select curtime();


now:当前日期和时间

select now();


YEAR :当前年

select YEAR(now());


MONTH :当前月

select MONTH(now());


DAY:当前日

select DAY(now());


date_add:增加指定的时间间隔

select date_add(now(), INTERVAL 70 YEAR );


datediff:获取两个日期相差的天数

select datediff('2021-10-01', '2021-12-01');


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

select name,datediff(curdate(), entry_date) entrydays from employee  order by entrydays desc ;

流程函数

函数功能
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 work_addresswhen '北京' then '一线城市'when '上海' then '一线城市'else'二线城市' end) as '工作地址'
from employee;


案例:统计班级各个学员的成绩,展示的规则如下:
>=85,展示优秀
>=60,展示及格
否则,展示不及格

创建案例表

create table score
(id      int comment 'ID',name    varchar(20) comment '姓名',math    int comment '数学',english int comment '英语',chinese int comment '语文'
) comment '学员成绩表';
insert into score(id, name, math, english, chinese)
VALUES (1, 'Tom', 67, 88, 95),(2, 'Rose', 23, 66, 90),(3, 'Jack', 56, 98, 76);

案例SQL

select 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;

http://www.lryc.cn/news/33248.html

相关文章:

  • 51单片机数字电子钟开题报告
  • day7 HTTP协议
  • 3DCAT+一汽奥迪:共建线上个性化订车实时云渲染方案
  • yii2项目使用frp https2http插件问题
  • 关于 interface{} 会有啥注意事项?下
  • ansible组件介绍和简单playbook测试
  • [数据结构]:13-插入排序(顺序表指针实现形式)(C语言实现)
  • es6 new Promise
  • Python爬虫实战:使用Requests和BeautifulSoup爬取网页内容
  • 质量指标——什么是增量覆盖率?它有啥用途?
  • Hive---拉链表
  • 日常文档标题级别规范
  • C++学习记录——십이 vector
  • Lombok常见用法总结
  • 【Ajax】异步通信
  • 近红外吸收荧光染料IR-808,IR-808 NH2,IR-808 amine,发射808nm 性质分享
  • 一图来看你需要拥有那些知识储备
  • 复位和时钟控制(RCC)
  • OpenWrt 专栏介绍00
  • udk开发-稀里糊涂
  • Java之内部类
  • 【MyBatis】篇二.MyBatis查询与特殊SQL
  • CE认证机构和CE证书的分类
  • Lesson 8.2 CART 分类树的建模流程与 sklearn 评估器参数详解
  • 【Unity】程序集Assembly模块化开发
  • 马尔可夫决策过程
  • win11下载配置CIC Flowmeter环境并提取流量特征
  • JDK如何判断自己是什么公司的
  • 大数据技术之HBase(二)HBase原理简介
  • 垒骰子(爆搜/DP)