首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >MySQL-函数

MySQL-函数

作者头像
小陈又菜
发布2025-12-23 16:16:51
发布2025-12-23 16:16:51
810
举报

定义

是指一段可以直接使用或者被另一段程序使用的代码或程序。

例如:

公司的数据表中一般登记了员工的生日,但是更经常使用的应该是员工的年龄。

数据表中储存了学生的成绩,但是我希望能快速得到学生的成绩等级。

而想要快速实现这些目的,我们就需要一些内置函数来提高处理数据的效率。

字符串函数

  • CONCAT
代码语言:javascript
复制
select concat('hello','world');

命令的结构是将字符'hello'与字符'world'进行拼接,结果如下:

  • LOWER
代码语言:javascript
复制
select lower('Hello');

命令的结果是将字符串全部变成小写:

  • UPPER
代码语言:javascript
复制
select upper('Hallo');

命令的结果是将字符串全部变成大写:

注意:字符串要使用引号括起来!!!

  • LPAD、RPAD
代码语言:javascript
复制
select lpad('01',6,'-');

lpad函数中有三个参数,分别是字符,填充后长度,填充字符。

运行结果如下:

使用符号 - 向左填充 字符串 01 ,使得最后的字符串总长度为6。

同理也有向右填充

代码语言:javascript
复制
select rpad('01',6,'-');
  • TRIM
代码语言:javascript
复制
select trim(' my  sql ');

该函数只有一个参数,但注意的是,TRIM函数只能将字符串首尾的字符删去,其中间的空格依然存在

  • SUBSTRING
代码语言:javascript
复制
select substring('Hello_World!',1,5);

SUBSTRING函数有三个参数,分别是字符串、索引位置、截取长度。

PS:该函数的索引位置是从1开始的 ,与分页查询有所区别

数值函数

  • CEIL(X)
代码语言:javascript
复制
select ceil(1.1);
select ceil(1.6);
select ceil(-1.1);

向上取整,运行结果分别为2、2、-1

  • FLOOR(X)
代码语言:javascript
复制
select floor(1.1);
select floor(1.6);
select floor(-1.1);

向下取整,运行结果分别为1、1、-2

  • MOD
代码语言:javascript
复制
select mod(5,4);
select mod(3,4);

取模,运行结果分别是1、3

  • RAND
代码语言:javascript
复制
select rand();

会随机生成一个在0到1之间的小数

  • ROUND
代码语言:javascript
复制
select round(1.33,2);
select round(1.335,2);

四舍五入,运行结果分别是1.33、1.34

实例:

随机生成一个六位数的验证码

代码语言:javascript
复制
select round( rand()*1000000,0 );

函数时可以进行内套的,运行结果如下:

但是这段代码并没有完全六位数验证码的满足要求,因为有可能随机生成的数,第一位小数为零,那么这样产生的是一位五位数

所以需要进行填充操作

代码语言:javascript
复制
select lpad(round( rand()*1000000,0 ),6,0);

这样就能保证一定是六位数的验证码

日期函数

  • CURDATE
代码语言:javascript
复制
SELECT curdate();

会显示当前系统的年月日

  • CURTIME
代码语言:javascript
复制
select curtime();

显示当前系统的时间

  • NOW

会显示当前系统的日期+时间

  • YEAR(DATE)
代码语言:javascript
复制
select year(now());
  • MONTH(DATE)
代码语言:javascript
复制
select month(now());
  • DAY(DATE)
代码语言:javascript
复制
select day(now());
  • DATE_ADD
代码语言:javascript
复制
select date_add(now(),interval 10 day);
--从现在时间开始,经过10天后的时间

三个参数分别是,起始时间,interval(固定的),时间间隔时间单位

  • DATEDIFF
代码语言:javascript
复制
select datediff('2023-6-7','2025-2-28');

计算两个时间的时间差,注意的是它的计算逻辑是:前者 - 后者

实例

计算所有员工的入职天数,并且按照倒序排序:

代码语言:javascript
复制
select *from users;  --使用员工信息表
select name ,datediff( curdate(),entrydate ) as 'entrydays' from users order by entrydays desc;
--将用户的姓名按照入职天数倒序排序

流程函数

  • IF
代码语言:javascript
复制
select if(1+1=1,'ok','error');

IF函数中要传入三个参数,表达式、真值时输出、假值时输出

  • IFNULL
代码语言:javascript
复制
select ifnull('hello','default');
select ifnull('','default');
select ifnull(null,'default');

IFNULL是用来判断字符串是否为空,若不为空输出,若为空则将默认值输出

要注意的是,' ' (引号中什么也没有)并不是空,依然会将这个“空”输出,所以以上的运行结果为hello、空白、default

  • CASE WHEN THEN ELSE
形式1:
代码语言:javascript
复制
select user_name,user_address,
       (case substring(user_address,1,2) when '北京' then '一线城市'
        when '上海' then '一线城市'
        else '二线城市' end) as '工作地址'
from users;

取员工地址的前两位,如果是北京或上海,就将其工作地址输出为一线城市,否则输出为而二线地址

形式2:
代码语言:javascript
复制
select case when user_address = '北京市' then '大佬' else '菜鸡' ;

总结

于是我们就可以回答,本文一开始提的两个问题:

  • 公司的数据表中一般登记了员工的生日,但是更经常使用的员工的入职天数:使用DATEDIFF
  • 数据表中储存了学生的成绩,但是我希望能快速得到学生的成绩等级:使用CADE WHEN THEN ELSE
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-03-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 定义
  • 字符串函数
  • 数值函数
  • 日期函数
  • 流程函数
    • 形式1:
    • 形式2:
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档