首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
9.1 基本查询语句
9.2 单表查询
9.2.1 查询所有字段
9.2.2 查询指定字段
9.2.3 查询指定数据
9.2.4 带关键字IN的查询
9.2.5 带关键字BETWEEN AND的范围查询
9.2.6 带LIKE的字符匹配查询
9.2.7 用IS NULL关键字查询空值
9.2.8 带AND的多条件查询
9.2.9 带OR的多条件查询
9.2.10 用DISTINCT关键字去除结果中的重复行
9.2.11 用ORDER BY关键字对查询结果进行排序
9.2.12 用GROUP BY关键字分组查询
9.2.13 用LIMIT限制查询结果的数量
9.3 聚合函数查询
9.3.1 COUNT()统计函数
9.3.2 SUM()求和函数
9.3.3 AVG()平均数函数
9.3.4 MAX()最大值函数
9.3.5 MIN()最小值函数
9.4 连接查询
9.4.1 内连接查询
9.4.2 外连接查询
9.4.3 复合条件连接查询
9.5 子查询
9.5.1 带IN关键字的子查询
9.5.2 带比较运算符的子查询
9.5.3 带EXISTS关键字的子查询
9.5.4 带ANY关键字的子查询
9.5.5 带ALL关键字的子查询
9.6 合并查询结果
9.7 定义表和字段的别名
9.7.1 为表取别名
9.7.2 为字段取别名
9.8 使用正则表达式查询
9.8.1 匹配指定字符中的任意一个
9.8.2 使用“*”和“ ”来匹配多个字符
9.8.3 匹配以指定的字符开头和结束的记录
10.1 MySQL函数
10.2 数学函数
10.2.1 ABS(x)绝对值函数
10.2.2 FLOOR(x)向下取整函数
10.2.3 RAND()随机数函数
10.2.4 PI()圆周率函数
10.2.5 TRUNCATE(x,y)截断函数
10.2.6 ROUND(x)近似值函数和ROUND(x,y)四舍五入函数
10.2.7 SQRT(x)平方函数
10.3 字符串函数
10.3.1 INSERT(s1,x,len,s2)替换函数
10.3.2 UPPER(s)函数和UCASE(s)字母大写函数
10.3.3 LEFT(s,n)取左函数
10.3.4 RTRIM(s)去空格函数
10.3.5 SUBSTRING(s,n,len)截取函数
10.3.6 REVERSE(s)反转函数
10.3.7 FIELD(s,s1,s2,…,sn)位置函数
10.3.8 LOCATE(s1,s)、POSITION(s1 IN s)和INSTR(s,s1)3个位置函数
10.4 日期和时间函数
10.4.1 CURDATE()和CURRENT_DATE()当前日期函数
10.4.2 CURTIME()和CURRENT_TIME()当前时间函数
10.4.3 NOW()当前日期和时间函数
10.4.4 DATEDIFF(d1,d2)间隔天数函数
10.4.5 ADDDATE(d,n)日期计算函数
10.4.6 ADDDATE(d,INTERVAL expr type)日期时间计算函数
10.4.7 SUBDATE(d,n)日期计算函数
10.5 条件判断函数
10.6 系统信息函数
10.6.1 获取MySQL版本号、连接数和数据库名的函数
10.6.2 获取用户名的函数
10.6.3 获取字符串的字符集和排序方式的函数
10.7.1 格式化函数FORMAT(x,n)
10.7.2 改变字符集的函数
10.7.3 改变字段数据类型的函数
当前位置:
首页>>
技术小册>>
MySQL从入门到精通(三)
小册名称:MySQL从入门到精通(三)
### 10.5 条件判断函数 在MySQL中,条件判断函数是一类非常重要的函数,它们允许开发者在查询过程中基于特定条件对数据进行处理和转换,从而在不离开SQL环境的情况下实现复杂的逻辑判断。这些函数极大地增强了SQL语句的灵活性和功能性,使得数据库操作更加高效和直观。本章节将详细介绍MySQL中几种常用的条件判断函数,包括`IF`、`IFNULL`、`CASE`以及`COALESCE`等,并通过实例展示它们的应用场景。 #### 10.5.1 IF 函数 `IF`函数是MySQL中最基本的条件判断函数之一,它类似于编程语言中的if-else语句。`IF`函数的基本语法如下: ```sql IF(expression, value_if_true, value_if_false) ``` - `expression`:需要被评估的表达式。 - `value_if_true`:如果`expression`为真(非0、非NULL),则返回此值。 - `value_if_false`:如果`expression`为假(0或NULL),则返回此值。 **示例**: 假设我们有一个员工表`employees`,包含字段`id`、`name`和`salary`,现在我们想查询所有员工的姓名和薪资,如果薪资超过5000,则标记为“高薪”,否则标记为“普通”。 ```sql SELECT name, salary, IF(salary > 5000, '高薪', '普通') AS salary_level FROM employees; ``` 这个查询通过`IF`函数实现了对薪资水平的简单分类。 #### 10.5.2 IFNULL 函数 `IFNULL`函数用于判断第一个参数是否为NULL,如果是,则返回第二个参数的值;否则,返回第一个参数的值。这对于处理可能包含NULL值的字段非常有用。 ```sql IFNULL(expression, value_if_null) ``` - `expression`:需要被检查的表达式。 - `value_if_null`:如果`expression`为NULL,则返回此值。 **示例**: 考虑`employees`表,如果我们想查询员工的姓名和薪资,但希望当薪资为NULL时显示为“未知”。 ```sql SELECT name, IFNULL(salary, '未知') AS salary FROM employees; ``` 这个查询通过`IFNULL`函数确保了即使薪资字段为NULL,也能在结果集中以“未知”的形式展示。 #### 10.5.3 CASE 语句 `CASE`语句是MySQL中更为强大和灵活的条件判断工具,它类似于编程语言中的switch-case或if-else-if结构。`CASE`语句有两种形式:简单CASE表达式和搜索CASE表达式。 **简单CASE表达式**: ```sql CASE expression WHEN value1 THEN result1 WHEN value2 THEN result2 ... ELSE default_result END ``` **搜索CASE表达式**: ```sql CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... ELSE default_result END ``` **示例**: 继续使用`employees`表,如果我们想根据员工的薪资水平将其分为“低收入”、“中等收入”和“高收入”三个等级。 ```sql SELECT name, salary, CASE WHEN salary <= 3000 THEN '低收入' WHEN salary BETWEEN 3001 AND 7000 THEN '中等收入' ELSE '高收入' END AS income_level FROM employees; ``` 这个查询通过搜索CASE表达式实现了对薪资水平的复杂分类。 #### 10.5.4 COALESCE 函数 `COALESCE`函数返回其参数列表中的第一个非NULL值。如果所有参数均为NULL,则返回NULL。这在处理多个可能为NULL的字段时非常有用,尤其是当你需要从多个候选值中选择一个非NULL值作为结果时。 ```sql COALESCE(value1, value2, ..., valueN) ``` - `value1, value2, ..., valueN`:一系列需要检查的表达式或值。 **示例**: 假设`employees`表除了`salary`外,还有一个`bonus`(奖金)字段,且`bonus`字段可能包含NULL值。现在,我们想要计算员工的总收入(薪资加奖金),但如果奖金为NULL,则只计算薪资。 ```sql SELECT name, COALESCE(salary + bonus, salary) AS total_income FROM employees; ``` 然而,需要注意的是,上述`COALESCE`用法在逻辑上并不完全准确,因为它没有直接处理`bonus`为NULL的情况。更精确的写法是使用`IFNULL`或`CASE`来确保在`bonus`为NULL时不会进行加法操作: ```sql SELECT name, salary + IFNULL(bonus, 0) AS total_income FROM employees; ``` 或者 ```sql SELECT name, CASE WHEN bonus IS NULL THEN salary ELSE salary + bonus END AS total_income FROM employees; ``` 这两种方式都能正确计算出当奖金为NULL时,总收入仅包含薪资。 #### 总结 条件判断函数在MySQL中扮演着至关重要的角色,它们允许开发者在查询过程中执行复杂的逻辑判断,从而根据数据的不同状态返回相应的结果。通过合理使用`IF`、`IFNULL`、`CASE`和`COALESCE`等函数,可以显著提高SQL查询的灵活性和表达能力,使得数据库操作更加高效和强大。在实际应用中,根据具体的需求场景选择合适的条件判断函数,是数据库开发者必须掌握的重要技能之一。
上一篇:
10.4.7 SUBDATE(d,n)日期计算函数
下一篇:
10.6 系统信息函数
该分类下的相关小册推荐:
MySQL从入门到精通(一)
MySQL必会核心问题
MySQL 实战 45 讲
细说MySQL(零基础到高级应用)
MySQL从入门到精通(二)
MySQL8.0入门与实践
MySQL从入门到精通(四)
MySQL从入门到精通(五)
SQL零基础到熟练应用(增删改查)