MySQL数据库中提供了很丰富的函数,比如我们常用的数值函数,字符串及日期处理函数等。SELECT语句及其条件表达式都可以使用这些函数,函数可以帮助用户更加方便的处理表中的数据,使MySQL数据库的功能更加强大。本篇文章主要为大家介绍几类常用函数的用法:
- 一、数值函数
- 二、字符串函数
- 三、日期函数
- 四、流程函数
一、数值函数
由于数值函数较为简单,我们就不进行一一地演示了,使用方法都大同小异!我们以 ROUND(x,y) 为例演示一下:
ROUND
- ROUND(x,y):求参数 x 的四舍五入的值,并保留 y 位小数
SELECT ROUND(2.345, 2);
学完本章节,我们来一个小的练习叭: 通过数据库的函数,生成一个随机的六位验证码。
SELECT ROUND(RAND() * 1000000); // 错误写法
上面这样写是不对的, 因为 RAND() 函数是 0-1 之间的小数,有可能出现 0.0012 等等这样的小数,经转换后得到的就不是六位数了,所以我们还得加一个保险,强制补 0 保证结果是六位数:
SELECT LPAD(ROUND(RAND() * 1000000, 0), 6, 0); // 正确写法
二、字符串函数
CONCAT
- 字符串拼接,将 s1, s2, ….. , sn 拼接成一个字符串
SELECT CONCAT("Hello"," MySQL");
LOWER & UPPER
- LOWER(str):将字符串 str 全部转为小写
- UPPER(str):将字符串 str 全部转为大写
SELECT LOWER("Hello"), UPPER("Hello");
LPAD & RPAD
- LPAD(s1, len, s2):在字符串 s1 的开始处填充字符串 s2,使字符串长度达到 len
- RPAD(s1, len, s2): 在字符串 s1 的结尾处填充字符串 s2,使字符串长度达到 len
SELECT LPAD("01",5,"-"), RPAD("01",5,"-");
TRIM & SUBSTRING
- TRIM(str):仅去掉字符串 str 头部和尾部的空格
- SUBSTRING(s, start, len):从字符串 s 的 start 位置截取长度为 length 的子字符串,等同于 SUBSTR(s, start, length)
SELECT TRIM(" Hello World "), SUBSTRING("Hello World", 1, 5);
学完本章节,我们来一个小的练习叭: 由于业务需求变更,企业员工的工号统一为 5 位数,目前不足 5 位数的全部在前面补 0。比如:1 号员工的工号应该为 00001
UPDATE emp SET workno = LPAD(workno,5,0);
三、日期函数
CURDATE & CURTIME & NOW
SELECT CURDATE(), CURTIME(), NOW();
YEAR & MONTH & DAY
SELECT YEAR(NOW()), MONTH(NOW()), DAY(NOW());
DATE_ADD
- DATE_ADD(date, INTERVAL expr type):返回一个日期/时间值加上一个时间间隔expr后的时间值
SELECT DATE_ADD(NOW(),INTERVAL 70 YEAR), DATE_ADD(NOW(),INTERVAL 70 MONTH), DATE_ADD(NOW(),INTERVAL 70 DAY);
DATEDIFF
- DATEDIFF(date1, date2):返回起始时间 date1 和结束时间 date2 之间的天数
SELECT DATEDIFF("2022-5-7","2022-7-9");
学完本章节,我们来一个小的练习叭: 查询所有员工的入职天数,并根据入职天数倒序排序。
SELECT name, DATEDIFF(CURDATE(),entrydate) as 'entrydays' FROM emp ORDER BY entrydays desc;
四、流程函数
流程函数也是很常见的一类函数,可以在 SQL 语句中实现筛选条件,从而提高语句的效率:
IF
- IF(value, t, f):如果表达式 value 成立,返回结果 t;否则,返回结果 f。
SELECT IF(TRUE,'OK','ERROR'), IF(FALSE,'OK','ERROR');
IFNULL
- IFNULL(value1, value2):如果 value1 的值不为 NULL,则返回 value1,否则返回 value2。
SELECT IFNULL('OK','ERROR'), IFNULL(NULL,'ERROR');
CASE WHEN THEN ELSE END
-
CASE expression WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... WHEN conditionN THEN resultN ELSE result END
- CASE 表示函数开始,END 表示函数结束。如果 condition1 成立,则返回 result1, 如果 condition2 成立,则返回 result2,当全部不成立则返回 result,而当有一个成立之后,后面的就不执行了。
下面以一个例子说明这个函数: 查询 emp 表的员工姓名和员工地址,员工地址在北京和上海的显示为一线城市,除此之外的都显示为二线城市:
SELECT
name,
(CASE workaddress WHEN '北京' THEN '一线城市' WHEN '上海' THEN '一线城市' ELSE '二线城市' END) as '工作地址'
FROM emp;
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/2139.html