Mysql表达式 | CASE IF 判空

本文涉及的产品
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
简介: Mysql表达式 | CASE IF 判空

简介

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

CASE表达式

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


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

1. 简单 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;

2. 搜索 CASE 表达式:

搜索 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:


1. IS NULL 和 IS NOT NULL 运算符:

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;

2. COALESCE 函数:

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

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

3. IFNULL 函数:

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

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

4. NULLIF 函数:

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


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
MySQL8.0新特性之公用表表达式学习
公用表表达式(或通用表表达式)简称为CTE(Common Table Expressions)。CTE是一个命名的临时结果集,作用范围是当前语句。CTE可以理解成一个可以复用的子查询,当然跟子查询还是有点区别的,CTE可以引用其他CTE,但子查询不能引用其他子查询。所以,可以考虑代替子查询。
487 0
|
存储 关系型数据库 MySQL
利用Cron表达式实现MySQL数据库的定时备份
以上就是如何使用Cron表达式和mysqldump命令实现MySQL数据库的定时备份。这种方法的优点是简单易用,而且可以根据需要定制备份的时间和频率。但是,它也有一些限制,例如,它不能备份MySQL服务器的配置文件和用户账户信息,也不能实现增量备份。如果需要更复杂的备份策略,可能需要使用专门的备份工具或服务。
386 15
|
SQL 关系型数据库 MySQL
MySQL:CTE 通用表达式
CTE(通用表表达式)为处理复杂查询提供了强大的工具。通过普通CTE,可以简化查询逻辑,提高可读性;通过递归CTE,可以优雅地处理层级结构数据。掌握CTE的使用,对于提升SQL查询能力和优化数据库操作有着重要意义。希望本文能帮助你更好地理解和使用MySQL中的CTE,提高工作效率和代码质量。
542 7
|
存储 SQL NoSQL
|
安全 关系型数据库 MySQL
mysql8.0 正值表达式Regular expressions (sample database classicmodels _No.5)
本文介绍了MySQL8.0中的正值表达式及其相关函数,通过实例展示了如何使用正则表达式进行字符串匹配,并提出了关于执行效率的问题。
400 1
|
SQL 关系型数据库 MySQL
mysql 中 case when 的使用
mysql 中 case when 的使用
|
关系型数据库 MySQL
mysql动态查列(case when then else end)
mysql动态查列(case when then else end)
216 0
|
关系型数据库 MySQL
922.【mysql】if 函数
922.【mysql】if 函数
923 3
|
SQL 关系型数据库 MySQL
MySQL——case when语句测试
MySQL——case when语句测试
261 0

推荐镜像

更多