Mysql常用函数

1、FIND_IN_SET

FIND_IN_SET() 是一个 MySQL 中的字符串函数,用于在一个由逗号分隔的字符串列表中查找指定字符串的位置。如果找到了指定的字符串,FIND_IN_SET() 将返回该字符串在列表中的位置(索引值)。如果没有找到,它将返回 0。
其语法如下:

FIND_IN_SET(str, strlist)
  • str: 要在列表中查找的字符串。
  • strlist: 用逗号分隔的字符串列表。

例如,考虑以下情况:

SELECT FIND_IN_SET('apple', 'orange,banana,apple');

此查询将返回 3,因为 ‘apple’ 在列表 ‘orange,banana,apple’ 中的位置是第三个元素。

FIND_IN_SET() 经常用于需要从一组预定义的选项中查找或验证特定值的情况,特别是在处理多选字段或多对多关系的数据时。例如,在人力资源管理系统的应聘者信息中,可能需要根据应聘者技能与岗位所需技能的匹配度进行筛选,这时 FIND_IN_SET() 就能派上用场了。

值得注意的是,FIND_IN_SET() 不区分大小写,且如果列表中有重复的字符串,函数将返回第一个出现的字符串位置。此外,由于其内部实现的原因,FIND_IN_SET() 在处理非常长的字符串列表时可能会表现不佳,因此在设计数据库结构时,应该考虑其性能影响

2、GROUP_CONCAT

GROUP_CONCAT 是 SQL 中的一个聚合函数,用于将同一组中的多个值连接成一个字符串。这个函数通常与 GROUP BY 语句一起使用,将属于同一组的多行数据的指定列值组合到一起,形成一个单独的、由指定分隔符分隔的字符串。

GROUP_CONCAT 的基本语法如下:

GROUP_CONCAT([DISTINCT] expr [ORDER BY {unsigned_integer | col_name | expr}]
      [SEPARATOR str_val])
  • expr:要连接的列或表达式的名称。
  • DISTINCT(可选):如果使用,GROUP_CONCAT 将只包含唯一的值。
  • ORDER BY(可选):用于指定结果字符串中值的顺序。
  • SEPARATOR(可选):用于在连接的值之间插入一个字符串作为分隔符,默认通常是逗号。

例如,假设有以下的 employees 表:

emp_iddept_idname
110mike
210jen
320finoa

如果我们想得到每个部门的员工名单,可以使用以下 SQL 查询:

SELECT dept_id, GROUP_CONCAT(name SEPARATOR ', ') AS employee_list
FROM employees
GROUP BY dept_id;
dept_idname
10mike,jen
20finoa

这样,我们就可以方便地获得一个汇总的字符串,显示每个部门的员工姓名列表。这对于生成报告或进行数据分析特别有用。

3、DATE_SUB

DATE_SUB() 是 SQL 中的一个日期函数,主要用于从给定的日期中减去一段时间间隔。这个函数在 MySQL 中特别常见,它允许用户基于特定的时间单位(如天、小时、分钟等)来计算过去的某个日期或时间点。
DATE_SUB() 函数的基本语法如下:

DATE_SUB(date, INTERVAL expr unit)
  • date:这是起始日期或时间,可以是日期类型的列名或者直接的日期字面量。
  • expr:是要减去的数值,即间隔的数量。
  • unit:定义了间隔的时间单位,可能的单位包括:
    SECOND
    MINUTE
    HOUR
    DAY
    WEEK
    MONTH
    QUARTER
    YEAR

例如,如果你想从当前日期减去 5 天,你可以使用下面的 SQL 语句:

SELECT DATE_SUB(CURDATE(), INTERVAL 5 DAY);

这将返回当前日期之前 5 天的日期。

4、MySQL 常用函数整理

MySQL 提供了大量的内置函数来帮助您执行各种数据处理任务。下面是按类别划分的一些常用函数。

1、字符串函数

函数名描述示例
CONCAT()连接两个或多个字符串SELECT CONCAT('Hello', ' ', 'World');
LOWER()将字符串转换为小写SELECT LOWER('HELLO WORLD');
UPPER()将字符串转换为大写SELECT UPPER('hello world');
LENGTH()返回字符串的长度SELECT LENGTH('Hello');
SUBSTRING()返回字符串的一部分SELECT SUBSTRING('Hello World', 7, 5);
TRIM()删除字符串两端的空格SELECT TRIM(' Hello ');
REPLACE()替换字符串中的部分字符SELECT REPLACE('Hello World', 'World', 'Universe');
LOCATE()查找一个字符串在另一个字符串中的位置SELECT LOCATE('World', 'Hello World');

2、数学函数

函数名描述示例
ABS()返回数值的绝对值SELECT ABS(-10);
ROUND()四舍五入到指定的小数位数SELECT ROUND(10.567, 2);
FLOOR()返回不大于给定数值的最大整数SELECT FLOOR(10.99);
CEIL()返回不小于给定数值的最小整数SELECT CEIL(10.01);
RAND()返回 0 到 1 之间的随机数SELECT RAND();
PI()返回 π 的值SELECT PI();
MOD()返回除法运算的余数SELECT MOD(10, 3);

3、日期和时间函数

函数名描述示例
NOW()返回当前日期和时间SELECT NOW();
CURDATE()返回当前日期SELECT CURDATE();
CURTIME()返回当前时间SELECT CURTIME();
DATE_ADD()添加指定的时间间隔SELECT DATE_ADD(NOW(), INTERVAL 1 DAY);
DATE_SUB()减去指定的时间间隔SELECT DATE_SUB(NOW(), INTERVAL 1 DAY);
TIMESTAMPDIFF()计算两个日期之间的时间间隔SELECT TIMESTAMPDIFF(DAY, '2024-01-01', '2024-07-01');
DATEDIFF()计算两个日期之间的天数差SELECT DATEDIFF('2024-07-01', '2024-01-01');
DATE_FORMAT()格式化日期和时间SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s');

4、转换函数

函数名描述示例
CAST()将表达式转换为指定的数据类型SELECT CAST('123' AS INT);
STR_TO_DATE()将字符串转换为日期SELECT STR_TO_DATE('2024-07-25', '%Y-%m-%d');
TO_DAYS()将日期转换为天数SELECT TO_DAYS('2024-07-25');
FROM_UNIXTIME()将 Unix 时间戳转换为日期和时间SELECT FROM_UNIXTIME(1689519600);

5、条件函数

函数名描述示例
IF()返回基于条件的结果SELECT IF(1 > 2, 'Yes', 'No');
CASE根据条件返回不同的值SELECT CASE WHEN 1 > 2 THEN 'Yes' ELSE 'No' END;
COALESCE()返回第一个非 NULL 的参数SELECT COALESCE(NULL, NULL, 'Default');

6、组合与聚合函数

函数名描述示例
COUNT()计算行数SELECT COUNT(*) FROM table_name;
SUM()计算数值总和SELECT SUM(column_name) FROM table_name;
AVG()计算数值平均值SELECT AVG(column_name) FROM table_name;
MIN()找出最小值SELECT MIN(column_name) FROM table_name;
MAX()找出最大值SELECT MAX(column_name) FROM table_name;

  • 14
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值