MySQL 条件函数
介绍
在MySQL中,条件函数用于根据特定条件返回不同的值。它们可以帮助我们在查询中实现逻辑判断,从而更灵活地处理数据。常见的条件函数包括 IF()
、CASE
、IFNULL()
和 NULLIF()
。本文将逐一介绍这些函数,并通过示例展示它们的用法。
IF() 函数
IF()
函数是MySQL中最常用的条件函数之一。它的语法如下:
IF(condition, value_if_true, value_if_false)
condition
:要评估的条件。value_if_true
:如果条件为真,返回的值。value_if_false
:如果条件为假 ,返回的值。
示例
假设我们有一个 students
表,其中包含学生的姓名和成绩。我们想要根据成绩是否及格(假设及格线为60分)来标记学生:
SELECT name, score, IF(score >= 60, 'Pass', 'Fail') AS result
FROM students;
输入:
name | score |
---|---|
Alice | 85 |
Bob | 45 |
Carol | 60 |
输出:
name | score | result |
---|---|---|
Alice | 85 | Pass |
Bob | 45 | Fail |
Carol | 60 | Pass |
CASE 语句
CASE
语句允许我们在查询中实现更复杂的条件逻辑。它的语法如下:
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE default_result
END
示例
假设我们想要根据学生的成绩范围来给他们评级:
SELECT name, score,
CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 80 THEN 'B'
WHEN score >= 70 THEN 'C'
WHEN score >= 60 THEN 'D'
ELSE 'F'
END AS grade
FROM students;
输入:
name | score |
---|---|
Alice | 85 |
Bob | 45 |
Carol | 60 |
输出:
name | score | grade |
---|---|---|
Alice | 85 | B |
Bob | 45 | F |
Carol | 60 | D |
IFNULL() 函数
IFNULL()
函数用于处理 NULL
值。它的语法如下:
IFNULL(expression, value_if_null)
expression
:要评估的表达式。value_if_null
:如果表达式为NULL
,返回的值。
示例
假设我们有一个 employees
表,其中包含员工的姓名和奖金。如果某个员工的奖金为 NULL
,我们希望将其显示为0:
SELECT name, IFNULL(bonus, 0) AS bonus
FROM employees;
输入:
name | bonus |
---|---|
Alice | 1000 |
Bob | NULL |
Carol | 500 |
输出:
name | bonus |
---|---|
Alice | 1000 |
Bob | 0 |
Carol | 500 |
NULLIF() 函数
NULLIF()
函数用于比较两个表达式,如果它们相等,则返回 NULL
。它的语法如下:
NULLIF(expression1, expression2)
expression1
和expression2
:要比较的两个表达式。
示例
假 设我们有一个 products
表,其中包含产品的名称和库存量。如果某个产品的库存量为0,我们希望将其显示为 NULL
:
SELECT name, NULLIF(stock, 0) AS stock
FROM products;
输入:
name | stock |
---|---|
Apple | 10 |
Banana | 0 |
Orange | 5 |
输出:
name | stock |
---|---|
Apple | 10 |
Banana | NULL |
Orange | 5 |