【Mysql数据库基础09】逻辑函数-IF、CASE、NULLIF、IFNULL

mysql逻辑函数

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 的实际值。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

失舵之舟-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值