Mysql表达式CASE IF 判空讲解

Mysql表达式CASE IF 判空讲解

MySQL 中的条件表达式用于根据条件的结果选择不同的值或执行不同的操作。条件表达式可以在 SELECT 语句中生成计算字段、在 WHERE 语句中过滤数据、在 ORDER BY 语句中排序等多种情况下使用

CASE表达式

在 MySQL 中,CASE 表达式是一种条件表达式,它允许根据特定条件对不同的值进行选择和返回。CASE 表达式可以用于 SELECT 语句、WHERE 子句、ORDER BY 子句等多个上下文中。

CASE 表达式有两种形式:简单 CASE 表达式和搜索 CASE 表达式。

简单 CASE 表达式通过对一个表达式进行匹配来选择返回的结果。它的语法如下:

CASE expression
WHEN value1 THEN result1
WHEN value2 THEN result2
...

ELSE else_result
END

在这个形式中, expression 是要比较的表达式, value1, value2, … 是要匹配的值, result1, result2, … 是与每个值匹配时返回的结果。else_result 是可选的,表示当没有匹配到任何值时的默认结果。

以下是一个简单 CASE 表达式的示例:

SELECT
CASE grade
WHEN 'A' THEN 'Excellent'
WHEN 'B' THEN 'Good'
WHEN 'C' THEN 'Average'
ELSE 'Below Average'
END AS grade_category
FROM
students;

搜索 CASE 表达式允许使用更复杂的条件进行匹配,并返回相应的结果。它的语法如下:

CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...

ELSE else_result
END

在这个形式中,每个 WHEN 子句都可以包含一个条件,当条件满足时返回相应的结果。ELSE 子句是可选的,默认返回结果。可以使用多个 WHEN 子句来处理不同的条件。

以下是一个搜索 CASE 表达式的示例:

SELECT
CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 80 THEN 'B'
WHEN score >= 70 THEN 'C'
ELSE 'F'
END AS grade
FROM
exam_results;

IF 表达式

MySQL 中的 IF 表达式是一种条件表达式,根据给定的条件返回不同的值。它可以用于 SELECT 语句中生成计算字段、在 WHERE 语句中过滤数据、在 ORDER BY 语句中排序等多种情况下。

IF 表达式的语法如下:

IF(condition, value_if_true, value_if_false)

其中,condition 是一个表达式或条件,value_if_true 是在条件为真时返回的值,value_if_false 是在条件为假时返回的值。

以下是 IF 表达式的详细介绍:

  • condition:IF 表达式中的条件。它可以是一个布尔表达式、比较表达式、逻辑表达式或其他返回布尔值的表达式。
  • value_if_true:当 condition 为真时返回的值。它可以是一个常量、列名、表达式或函数。
  • value_if_false:当 condition 为假时返回的值。它可以是一个常量、列名、表达式或函数。

IF 表达式的工作原理如下:

  • 如果 condition 为真(非零),则 IF 表达式的结果为 value_if_true。
  • 如果 condition 为假(零或 NULL),则 IF 表达式的结果为 value_if_false。

示例用法:

SELECT name, IF(score >= 60, 'Pass', 'Fail') AS result
FROM students;

上述示例中,根据学生的分数是否大于等于 60,将结果集中的每个学生标记为 ‘Pass’ 或 ‘Fail’。

IF 表达式在处理条件逻辑和结果生成时非常有用,可以根据不同的条件返回不同的值,使数据处理更加灵活和可控。

NULL 值处理

在 MySQL 中,NULL 值表示缺少值或未知值。处理 NULL 值是数据库查询和数据处理中的常见任务。以下是 MySQL 中处理 NULL 值的方法及相应的示例 SQL:

  • IS NULL 用于判断某个列是否为 NULL。例如,查询名为 customers 的表中姓氏为 NULL 的客户:
SELECT * FROM customers WHERE last_name IS NULL;
  • IS NOT NULL 用于判断某个列是否不为 NULL。例如,查询名为 products 的表中库存数量不为 NULL 的产品:
SELECT * FROM products WHERE inventory_count IS NOT NULL;

COALESCE 函数用于返回参数列表中的第一个非 NULL 值。如果所有参数都为 NULL,则返回 NULL。例如,查询名为 employees 的表中员工的姓名,如果姓名为 NULL,则返回 ‘Unknown’:

SELECT COALESCE(first_name, 'Unknown') AS name FROM employees;

IFNULL 函数用于判断某个列是否为 NULL,并返回相应的替代值。如果列的值为 NULL,则返回指定的替代值;如果列的值不为 NULL,则返回列的原始值。例如,查询名为 orders 的表中订单的总金额,如果总金额为 NULL,则返回 0:

SELECT IFNULL(total_amount, 0) AS amount FROM orders;

NULLIF 函数用于比较两个表达式的值,如果两个值相等,则返回 NULL;如果两个值不相等,则返回第一个表达式的值。它常用于避免某个列的值与特定值相等时返回该列的值,而是返回 NULL。例如,查询名为 students 的表中成绩为 100 的学生的姓名,如果成绩为 100,则返回 NULL:

SELECT NULLIF(score, 100) AS name FROM students;

这些方法可以根据需要在 SQL 查询中处理 NULL 值。通过使用 IS NULL 和 IS NOT NULL 运算符、COALESCE 函数、IFNULL 函数和 NULLIF 函数,可以进行条件判断、替代值设置和结果处理,以更好地处理和处理 NULL 值。

以上是 MySQL 中常见的条件表达式及其详细介绍。这些条件表达式可以根据不同的条件进行数据处理、结果返回和条件判断,提供了灵活的方式来操作和过滤数据。

关注“夏壹分享”发送“资源”获取238本进阶书籍和大厂面试Mysql表达式CASE IF 判空讲解


原文始发于微信公众号(夏壹分享):Mysql表达式CASE IF 判空讲解

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/155011.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!