【Mysql数据库基础09】逻辑函数-IF、CASE、NULLIF、IFNULL
将根据学生成绩是否大于等于60分返回 ‘Pass’ 或 ‘Fail’。: 如果val1不为NULL,返回val1;语句,提供更加清晰和灵活的条件判断逻辑。函数用于根据指定条件返回不同的结果。: 如果两个参数相等,返回NULL;表达式根据学生成绩的不同范围返回不同的等级。包含员工的工资信息,其中有一个字段为。表达式用于根据条件返回不同的结果。包含用户的信息,其中有一个字段为。以下是一个示例,假设有一
1 IF
在 MySQL 中,IF
函数用于根据指定条件返回不同的结果。其基本语法如下:
IF(condition, value_if_true, value_if_false)
condition
是一个条件表达式,如果该条件成立(返回true),则返回value_if_true
;如果条件不成立(返回false),则返回value_if_false
。
以下是一个简单的例子来说明 IF
函数的用法:
假设有一个名为 students
的表,包含 name
, score
两个字段,我们想要根据学生成绩是否大于等于60分返回不同的结果:
SELECT name, score,
IF(score >= 60, 'Pass', 'Fail') AS result
FROM students;
在这个例子中,IF(score >= 60, 'Pass', 'Fail')
将根据学生成绩是否大于等于60分返回 ‘Pass’ 或 ‘Fail’。
除了基本的 IF
函数之外,在MySQL中还有一种扩展的 IF
语法,如下:
IF(expression1, value1,
IF(expression2, value2,
IF(expression3, value3, value4)
)
)
2 CASE
在 MySQL 中,CASE
表达式用于根据条件返回不同的结果。CASE
可以替代多个嵌套的 IF
语句,提供更加清晰和灵活的条件判断逻辑。其基本语法如下:
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE default_result
END
CASE
关键字标识表达式的开始。WHEN condition1 THEN result1
定义了第一个条件和其对应的结果。- 可以根据需要添加多个
WHEN condition THEN result
来定义更多的条件和结果。 ELSE default_result
用于定义当所有条件都不满足时的默认结果。END
标识表达式的结束。
以下是一个示例,假设有一个名为 students
的表,包含 name
, score
两个字段,我们想根据学生成绩返回不同的等级:
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;
在这个例子中,CASE
表达式根据学生成绩的不同范围返回不同的等级。
3 NULLIF
NULLIF(val1, val2)
: 如果两个参数相等,返回NULL;否则返回val1。
以下是一个示例,假设有一个表 users
包含用户的信息,其中有一个字段为 email
:
SELECT email, NULLIF(email, 'example@example.com') AS filtered_email
FROM users;
在这个示例中,我们选择了 email
字段,并通过 NULLIF
函数将值为 'example@example.com'
的邮箱过滤掉。如果 email
的值为 'example@example.com'
,那么 filtered_email
列将会显示为 NULL
;如果 email
的值不是 'example@example.com'
,那么 filtered_email
列将会显示为 email
的实际值。
4 IFNULL
IFNULL(val1, val2)
: 如果val1不为NULL,返回val1;否则返回val2。
下面是一个示例,假设有一个表 employees
包含员工的工资信息,其中有一个字段为 bonus
,但某些员工的 bonus
字段为空(即为 NULL):
SELECT employee_id, bonus, IFNULL(bonus, 0) AS actual_bonus
FROM employees;
如果 bonus
为 NULL,那么 actual_bonus
列将显示为 0
;如果 bonus
不为 NULL,则显示为 bonus
的实际值。
更多推荐
所有评论(0)