函数能帮助用户做很多事情,比如说字符串的处理、数值的运算、日期的运算等,在这方面 MySQL 提供了多种内建函数帮助开发人员编写简单快捷的 SQL 语句,其中常用的函数有字符串函数、日期函数和数值函数。
在 MySQL 数据库中,函数可以用在 SELECT 语句及其子句(例如 where、order by、having等)中,也可以用在 update、delete语句及其子句中。
其它函数就不说了,单独来说一下流程函数。
流程函数
流程函数也是很常用的一类函数,用户可以使用这类函数在一个SQL语句中实现选择,这样能够提高语句的效率。
函数 | 功能 |
---|---|
IF(value, true, false) | 如果 value 是真,返回设定的第一个值,否则返回第二个 |
IFNULL(value, value2) | 如果 value 不为空,返回 value,否则返回 value2 |
CASE WHEN [value1] THEN [result1]…ELSE [default] END | 如果 value1 是真,返回 result1,否则返回 default |
CASE [expr] WHEN [value1] THEN [result1]…ELSE [default] END | 如果 expr 等于 value1,返回 result1,否则返回 default(相当于 switch case 语句) |
create table student(id int, name varchar(50), score decimal(9,2), sex char(1));
# sex 1 表示男,0表示女
insert into student values
(1, '小白', 100, '1'),
(2, '小红', 99, '0'),
(3, '小橙', 89, '1'),
(4, '小黄', 79, '0'),
(5, '小绿', 69, '1'),
(6, '小青', 59, '0'),
(7, '小蓝', 49, '1'),
(8, '小紫', 39, '0'),
(9, '小黑', 29, '1'),
(10, '小明', null, '0');
# IF 函数
SELECT IF(score >= 60, '及格', '不及格') from student;
# IFNULL 函数,这个函数一般用来替换NULL值,因为NULL值是无法参与运算的
SELECT IFNULL(score, 0) from student;
# CASE WHEN
SELECT name, (CASE WHEN score >= 90 THEN '优'
WHEN score >= 80 and score < 90 THEN '良'
WHEN score >= 60 and score < 80 THEN '中'
ELSE '不及格' END) as '成绩'
from student;
# CASE expr WHEN
SELECT SUM(case sex when '1' then 1 else 0 end) as 'boycount',
SUM(case sex when '0' then 1 else 0 end) as 'girlcount'
from student
通常 case when 也是行转列的方式