找回密码
 立即注册
首页 业界区 安全 MySQL函数

MySQL函数

勺缓曜 2025-10-1 13:07:45
MySQL 提供了丰富的内置函数,用于数据处理、转换、计算和聚合。这些函数可以极大地简化 SQL 查询并提高数据处理效率。
1、字符串函数

函数功能CONCAT (S1,S2, ...Sn)字符串拼接,将 S1 , S2 , ··· Sn 拼接成一个字符串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 个长度的字符串示例
  1. -- concat : 字符串拼接
  2. select concat('Hello' , ' MySQL');
  3. -- lower : 全部转小写
  4. select lower('Hello');
  5. -- upper : 全部转大写
  6. select upper('Hello');
  7. -- lpad : 左填充
  8. select lpad('01', 5, '-');
  9. -- rpad : 右填充
  10. select rpad('01', 5, '-');
  11. -- trim : 去除空格
  12. select trim(' Hello MySQL ');
  13. -- substring : 截取子字符串
  14. select substring('Hello MySQL',1,5);
  15. -- 企业员工的工号,统一为5位数,目前不足5位数的全部在前面补0。
  16. update emp set workno = lpad(workno, 5, '0');
复制代码
2、数值函数

函数功能CEIL (x)向上取整FLOOR(x)向下取整MOD(x,y)返回x/y的模RAND()返回0~1内的随机数ROUND(x,y)求参数x的四舍五入的值,保留y位小数示例
  1. -- ceil:向上取整
  2. select ceil(1.1);
  3. -- floor:向下取整
  4. select floor(1.9);
  5. -- mod:取模
  6. select mod(7,4);
  7. -- rand:获取随机数
  8. select rand();
  9. -- round:四舍五入
  10. select round(2.344,2);
  11. -- 通过数据库的函数,生成一个六位数的随机验证码。
  12. select lpad(round(rand()*1000000 , 0), 6, '0')
复制代码
3、日期函数

函数功能CURDATE ()返回当前日期CURTIME ()返回当前时间NOW()返回当前日期和时间YEAR (date)获取指定 date 的年份MONTH(date)获取指定 date 的月份DAY (date)获取指定 date 的日期DATE_ADD(date, INTERVAL expr type)返回一个日期/时间值加上一个时间段expr 后的时间值DATEDIFF(datedate2)返回起始时间datel 和 结束时间date2之间的天数示例
  1. -- curdate:当前日期
  2. select curdate();
  3. -- curtime:当前时间
  4. select curtime();
  5. -- now:当前日期和时间
  6. select now();
  7. -- YEAR , MONTH , DAY:当前年、月、日
  8. select YEAR(now());
  9. select MONTH(now());
  10. select DAY(now());
  11. -- date_add:增加指定的时间间隔
  12. select date_add(now(), INTERVAL 70 YEAR );
  13. -- datediff:获取两个日期相差的天数
  14. select datediff('2021-10-01', '2021-12-01');
  15. -- 查询所有员工的入职天数,并根据入职天数倒序排序。
  16. select name, datediff(curdate(), entrydate) as 'entrydays' from emp order by
  17. entrydays desc;
复制代码
4、流程函数

函数功能IF(value , t , f)如果value为true,则返回t,否则返回 fIFNULL(value1,value2)如果valuel不为空, 返回valuell, 否则 返回value2CASE WHEN [ val1 ] THEN [res1] ... ELSE [ default ] END如果val1为true,返回res1,... 否则返回default默认值CASE [ expr ] WHEN [ val1 ] THEN [res1] ... ELSE [ default ] END如果expr的值等于val1,返回res1,... 否则返回default默认值示例
  1. -- 简单IF
  2. SELECT IF(1 > 0, 'True', 'False'); -- 结果: 'True'
  3. -- 实际应用
  4. SELECT name, salary, IF(salary > 5000, 'High', 'Low') AS salary_level
  5. FROM employees;
  6. -- 简单CASE
  7. SELECT
  8.     name,
  9.     CASE department_id
  10.         WHEN 1 THEN 'Sales'
  11.         WHEN 2 THEN 'Marketing'
  12.         WHEN 3 THEN 'IT'
  13.         ELSE 'Other'
  14.     END AS department_name
  15. FROM employees;
  16. -- 搜索CASE
  17. SELECT
  18.     name,
  19.     salary,
  20.     CASE
  21.         WHEN salary > 10000 THEN 'High'
  22.         WHEN salary > 5000 THEN 'Medium'
  23.         ELSE 'Low'
  24.     END AS salary_grade
  25. FROM employees;
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册