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

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐