Mysql表达式 | CASE IF 判空

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 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 中常见的条件表达式及其详细介绍。这些条件表达式可以根据不同的条件进行数据处理、结果返回和条件判断,提供了灵活的方式来操作和过滤数据。


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
11月前
MySQL8.0新特性之公用表表达式学习
公用表表达式(或通用表表达式)简称为CTE(Common Table Expressions)。CTE是一个命名的临时结果集,作用范围是当前语句。CTE可以理解成一个可以复用的子查询,当然跟子查询还是有点区别的,CTE可以引用其他CTE,但子查询不能引用其他子查询。所以,可以考虑代替子查询。
109 0
|
2月前
|
SQL 关系型数据库 MySQL
mysql 中 case when 的使用
mysql 中 case when 的使用
|
4月前
|
关系型数据库 MySQL
MySQL中CASE WHEN用法总结
MySQL中CASE WHEN用法总结
|
4月前
|
关系型数据库 MySQL
mysql动态查列(case when then else end)
mysql动态查列(case when then else end)
|
4月前
|
SQL 关系型数据库 MySQL
MySQL——case when语句测试
MySQL——case when语句测试
45 0
|
4月前
|
存储 SQL 关系型数据库
MySQL存储过程——if判断示例
MySQL存储过程——if判断示例
63 0
|
4月前
|
存储 关系型数据库 MySQL
MySQL数据库——存储过程-if条件判断、参数、case(介绍、用法、案例)
MySQL数据库——存储过程-if条件判断、参数、case(介绍、用法、案例)
145 0
|
5月前
|
关系型数据库 MySQL
922.【mysql】if 函数
922.【mysql】if 函数
61 3
|
关系型数据库 MySQL
MySQL深入浅出: order by if()与order by in()之条件排序
MySQL深入浅出: order by if()与order by in()之条件排序
225 0
|
关系型数据库 MySQL
灵活排序策略:发现 MySQL 中的 ORDER BY IF 和 ORDER BY IN
灵活排序策略:发现 MySQL 中的 ORDER BY IF 和 ORDER BY IN
194 0
下一篇
无影云桌面