目录

聚合函数

group_concat

ABS(X) 取绝对值

CEIL(X) 返回大于或者等于X的最小整数

floor(X)返回小于或者等于X的最小整数

GREATEST(expr1 ...) 返回列表中的最大值

LEAST(expr1...) 返回列表中的最小值

常见的数学函数

字符串函数

CHAR_LENGTH(s)

CONCAT(s1,s2...sn) 合并字符

CONCAT_WS(x, s1,s2...sn) 指定分隔符合并

field(s,s1,s2...)

LTRIM(s) 去掉字符串 s 开始处的空格

RTRIM(s) 去掉字符串 s 结束处的空格

TRIM(s) 去掉两端空格

MID(s,n,len) 截取字符串

POSITION(s1 IN s) 从字符串截取s1的开始位置

REPLACE(s,s1,s2) 替代函数

REVERSE(s) 字符串翻转

RIGHT(s,n) 返回字符串 s 的后 n 个字符

STRCMP(s1,s2) 字符串比较是否相等

字符串大小写转换

日期函数

UNIX_TIMESTAMP() 返回当前的时间戳

UNIX_TIMESTAMP(DATE_STRING) 解析日期为时间戳

时间戳转固定的日期格式

CURDATE() 返回当前日期

CURRENT_TIME 返回当前时间

CURRENT_TIMESTAMP() 返回当前日期和时间

DATE() 将字符串日期转换为标准格式日期

DATEDIFF(d1,d2) 计算日期相隔天数

计算时间差值

格式化日期

加减指定的时间间隔

EXTRACT(type FROM d) 返回日期的具体数值

LAST_DAY(d) 返回这一月的最后一天

MAKEDATE(year, day-of-year) 构建日期通过天数

其他日期函数

文末资源推荐

每文一语


在MySQL中,为了提高代码重用性和隐藏实现细节,MySQL提供了很多函数。函数可以理解为别人封装好的模板代码。

在MySQL中,聚合函数主要由:count,sum,min,max,avg,这些简单的组成,但是仍然有许多的聚合函数需要我们自己去了解和掌握,下面我们将详细的介绍MySQL一些基本的函数,旨在解决我们日常的一些的业务场景问题。

聚合函数

group_concat

group_concat()函数首先根据group by指定的列进行分组,并且用分隔符分隔,将同一个分组中的值连接起来,返回一个字符串结果。

group_concat([distinct] 字段名 [order by 排序字段 asc/desc] [separator '分隔符'])

它和我们最初学习的group by是有所区别的;这里的分组是将一列里面的值进行分组,然后放在跳一行的表中。

说明:

  (1)使用distinct可以排除重复值;

  (2)如果需要对结果中的值进行排序,可以使用order by子句;

  (3)separator是一个字符串值,默认为逗号。、

准备数据集

create table emp(emp_id int primary key auto_increment comment '编号',emp_name char(20) not null default '' comment '姓名',salary decimal(10,2) not null default 0 comment '工资',department char(20) not null default '' comment '部门'
);insert into emp(emp_name,salary,department)
values('张晶晶',5000,'财务部'),('王飞飞',5800,'财务部'),('赵刚',6200,'财务部'),('刘小贝',5700,'人事部'),
('王大鹏',6700,'人事部'),('张小斐',5200,'人事部'),('刘云云',7500,'销售部'),('刘云鹏',7200,'销售部'),
('刘云鹏',7800,'销售部');
-- 将所有员工的名字合并成一行
select group_concat(emp_name) from emp;

那么肯定有的小伙伴,对该函数有所疑问,为什么要使用该函数呢,这种函数应用场景在哪里呢?

应用场景:王老板此时需要看每个部门的人员是那些,此时的你应该怎么做,学了这个函数之后你就可以一行代码解决。它与group by联合使用的效果比较好,例如下面还可以指定分隔符,便于我们自己查看。

-- 指定分隔符合并
select department,group_concat(emp_name separator '-' ) from emp group by department; 

我们还可以指定排序方式,在这里我们可以按照他们的薪资水平进行展示,那么也显示该函数的一个功能,这里面不单单可以对某一列进行字段分组,还可以对另外一列进行排序

-- 指定排序方式和分隔符 select department,group_concat(emp_name order by salary desc separator ';' ) from emp group by department;

ABS(X) 取绝对值

-- ABS(X)
-- 修改标准的字段,使其变成负数
UPDATE emp SET salary=-salary  WHERE emp_name ='王大鹏';
SELECT salary from emp WHERE emp_name='王大鹏';
SELECT ABS(salary) from emp WHERE emp_name='王大鹏';

CEIL(X) 返回大于或者等于X的最小整数

select ceil(1.7) #2

那么比如0.7,那么就是1

floor(X)返回小于或者等于X的最小整数

-- FLOOR(X)
SELECT FLOOR(1.7)

GREATEST(expr1 ...) 返回列表中的最大值

返回以下数字列表中的最大值:
SELECT GREATEST(3, 12, 34, 8, 25); -- 34
返回以下字符串列表中的最大值:
SELECT GREATEST("Google", "Runoob", "Apple");   -- Runoob

LEAST(expr1...) 返回列表中的最小值

返回以下数字列表中的最小值:
SELECT LEAST(3, 12, 34, 8, 25); -- 3
返回以下字符串列表中的最小值:
SELECT LEAST("Google", "Runoob", "Apple");   -- Apple

常见的数学函数

字符串函数

CHAR_LENGTH(s)

返回字符串 s 的字符数

返回字符串 RUNOOB 的字符数

SELECT CHAR_LENGTH("RUNOOB") AS '字符串长度';

SELECT emp_name as '姓名',CHAR_LENGTH(emp_name) as '名字长度' FROM emp;

character_length和char_length完全相同 

CONCAT(s1,s2...sn) 合并字符

字符串 s1,s2 等多个字符串合并为一个字符串

SELECT CONCAT("123","456") 

CONCAT_WS(x, s1,s2...sn) 指定分隔符合并

同 CONCAT(s1,s2,...) 函数,但是每个字符串之间要加上 x,x 可以是分隔符

SQL-Tutorial-is-fun!

field(s,s1,s2...)

返回第一个字符串 s 在字符串列表(s1,s2...)中的位置

c 在这个字符串列表中是第三个 注意是第一个位置哟

LTRIM(s) 去掉字符串 s 开始处的空格

有时候,针对一些不规则的数据集,我们为了节省时间可以不用其他的工具进行预处理,直接使用ltrim()函数去除前端空格,注意是前端空格哟

RTRIM(s) 去掉字符串 s 结束处的空格

去掉字符串 s 结尾处的空格,这里和上面的记住比较的对称,L——left(左);R——right(右)

那么有时候,我们再想,要是两边都有空字符的话,我们这样频繁的嵌套岂不是很麻烦,有没有一个函数直接解决两端的空格呢?答案是有!

TRIM(s) 去掉两端空格

去掉字符串 s 开始和结尾处的空格

MID(s,n,len) 截取字符串

从字符串 s 的 n 位置截取长度为 len 的子字符串,同 SUBSTRING(s,n,len)

注意,这里的索引开始是1,也就是第一个是1,后面代表着取到的字符串长度 ,下面的函数和它的功能也是一样的。

POSITION(s1 IN s) 从字符串截取s1的开始位置

从字符串 s 中获取 s1 的开始位置

注意这里和前面的field函数是不一样的,前面是在字符串列表里面返回第一个列表元素的位置 ,它由多个字符串,而这个只有一个;

我们举一个详细的例子:通过field函数,第一个参数使用人事部才能匹配到它的位置,如果使用人事那么就无法匹配到,这也是它的一个局限性

如果使用position in 字段就可以匹配到,原因和是什么呢,这是因为第一个函数把多个字符串和后面的字符串进行了全面的匹配,是全局匹配

REPLACE(s,s1,s2) 替代函数

将字符串 s2 替代字符串 s 中的字符串 s1,只是改变了显示,并没有概念原始的数据集

REVERSE(s) 字符串翻转

将字符串s的顺序反过来

这里的应用场景,可以根据你的业务,涉及到一些偏僻的语法,可能就是我们要考的或者现实中创新的部分

RIGHT(s,n) 返回字符串 s 的后 n 个字符

STRCMP(s1,s2) 字符串比较是否相等

比较字符串 s1 和 s2,如果 s1 与 s2 相等返回 0 ,如果 s1>s2 返回 1,如果 s1<s2 返回 -1,比较的是长度

字符串大小写转换

日期函数

UNIX_TIMESTAMP() 返回当前的时间戳

返回从1970-01-01 00:00:00到当前毫秒值;至于为什么是从这一年开始的,有兴趣的小伙伴可以去搜索一下,为什么选取这一年?

UNIX_TIMESTAMP(DATE_STRING) 解析日期为时间戳

将制定日期转为毫秒值时间戳

时间戳转固定的日期格式

FROM_UNIXTIME(BIGINT UNIXTIME[, STRING FORMAT])

将毫秒值时间戳转为指定格式日期

这个功能有时候可以将一些不规则的数据直接用这一行的代码,不需要用到Python,学了mysql还是非常的方便的

CURDATE() 返回当前日期

也可以达到这种效果

CURRENT_TIME 返回当前时间

CURRENT_TIMESTAMP() 返回当前日期和时间

DATE() 将字符串日期转换为标准格式日期

这种方法可以用于格式转换,有些时候我们的格式不统一,有些是字符串组成的日期,有些本身就是日期格式,为了格式的统一性,我们可以利用该方法进行操作

DATEDIFF(d1,d2) 计算日期相隔天数

计算时间差值

格式化日期

加减指定的时间间隔

INTERVAL:操作 后面加正负号 即可变成对应的运算符

EXTRACT(type FROM d) 返回日期的具体数值

LAST_DAY(d) 返回这一月的最后一天

MAKEDATE(year, day-of-year) 构建日期通过天数

其他日期函数

这些函数,有时候我们可以灵活的运用,可以极大的提高我们的工作效率,特别是前端的展示页面,我们后台只需要修改这样一行代表就可以完成显示,因为mysql是查询而不是修改元数据,所以这就是它的优势。

文末资源推荐

MySQL的函数——聚合函数、数学函数、字符串函数、日期函数相关推荐

  1. 【MySQL】数据库函数通关教程上篇(聚合、数学、字符串、日期、控制流函数)

  2. 2021年大数据Hive(五):Hive的内置函数(数学、字符串、日期、条件、转换、行转列)

    全网最详细的Hive文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 系列历史文章 前言 Hive的内置函数 一.数学函数 1. 取整函数: round ...

  3. mysql内置函数,在mysql里面利用str_to_date()把字符串转换为日期格式

    mysql内置函数,在mysql里面利用str_to_date()把字符串转换为日期格式 示例:分隔符一致,年月日要用%号 select str_to_date('2008-4-2 15:3:28', ...

  4. php把数组转为字符串函数,php把数组转为字符串用什么函数

    [摘要] PHP即"超文本预处理器",是一种通用开源脚本语言.PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言.PHP独特的语法混合了C.Java.Perl以及 ...

  5. mysql信息函数和加密函数_MYSQL 常用函数(数学、字符串、日期时间、系统信息、加密)...

    一.数学函数 数学函数主要用于处理数字,包括整型.浮点数等. ABS(x) 返回x的绝对值 SELECT ABS(-1) -- 返回1 CEIL(x),CEILING(x) 返回大于或等于x的最小整数 ...

  6. mysql 日期时间格式化字符串_MySQL日期函数与日期转换格式化函数大全

    Mysql作为一款开元的免费关系型数据库,用户基础非常庞大,本文列出了MYSQL常用日期函数与日期转换格式化函数 1.DAYOFWEEK(date) SELECT DAYOFWEEK('2016-01 ...

  7. php mysql 随机字符串函数是_PHP 生成随机字符串的方法函数, 默认长度6位 字母和数字混合件...

    PHP 生成随机字符串的方法函数, 默认长度6位 字母和数字混合件/** * 生成随机字符串,可用来自动生成密码 默认长度6位 字母和数字混合 * @param string $len 长度 * @p ...

  8. Sql Server 字符串、日期函数 收藏

    /**//*************************************************************************** DATEPART 返回代表指定日期的指 ...

  9. Sql Server 字符串、日期函数

    /**//*************************************************************************** DATEPART 返回代表指定日期的指 ...

  10. php+数组转换函数是,php数组与字符串的转换函数大全

    4.在字符串种中查找另外一个字符 使用strpos()或strstr()函数 strpos() 函数返回字符串在另一个字符串中第一次出现的位置. 如果没有找到该字符串,则返回 false. 语法: / ...

最新文章

  1. linux中多进程调试,linux下用gdb调试多进程
  2. canvas1:简单介绍、开始使用、画直线+虚线
  3. Mongoose 索引、Mongoose 内置 CURD 方 法、扩展 Mongoose Model 的静态方法和 实例方法
  4. java的sas数据安全_使用sas中的do循环指定数据信息
  5. 2017.6.21 大都市meg 思考记录
  6. 设计模式(十八):责任链模式
  7. android游戏分成,原神半年吸金10亿美元,为何国内Android商店还秉承着55分成?
  8. 常见数学公式和符号的英文读法大全
  9. JS输入银行卡号,4位自动加空格 ,根据银行卡号获取开户行和银行
  10. oracle odi 资料档案库访问期间出现未分类的异常错误,ODI11g调用DBLink时报ORA-28267: Invalid NameSpace Value错误...
  11. 路由器获取不到ipv6地址
  12. 网络安全简历如何写?
  13. vue获取地址栏地址url截取参数
  14. FILecoin 将重大战略升级,FIL 或将引导商业数据
  15. 2022软工-安庆集团-冲刺计划
  16. 区块链学习笔记19——ETH难度调整
  17. CASS11.0.0.8最新版免狗下载安装教程
  18. 房产抵押贷款利率划算吗
  19. 怎么做一个物流公司网站
  20. python bs4 BeautifulSoup

热门文章

  1. 麻省理工大学计算机中心,Massachusetts Institute of Technology 麻省理工大学
  2. excel中NORM.DIST 的python实现
  3. 未转变者服务器配置要求,游戏配置 - 未转变者中文维基 | Unturned资料站 - 灰机wiki...
  4. 公式编辑器中如何修改字体?
  5. 毫末追击智能驾驶1000天,对战蔚小理将现胜负手
  6. 【转】谢帅同学做的——柔软的canvas时钟
  7. 流程挖掘如何助力采购数字化转型?
  8. Linux 文件颜色代表含义
  9. Compile、Make和Build的区别
  10. Python:正则表达式re.compile()