SQL 中带有 NULL 值的 CASE 表达式
在本文中,我们将介绍 SQL 中使用 CASE 表达式时处理 NULL 值的情况。我们将了解在 CASE 表达式中如何处理 NULL 值以及使用示例。
阅读更多:SQL 教程
CASE 表达式简介
在 SQL 中,CASE 表达式用于根据条件进行条件判断并返回相应的结果。它类似于其他编程语言中的 if-else 语句或者 switch 语句,可以根据给定的条件返回不同的值。
CASE 表达式主要有两种格式:
– 简单 CASE 表达式:根据单个表达式的值进行条件判断。
– 搜索 CASE 表达式:根据多个条件的结果进行条件判断。
处理 NULL 值的方法
在进行 CASE 表达式时,我们需要考虑 NULL 值的处理方式。当条件字段的值为 NULL 时,使用普通的等值判断是无法得到结果的。为了处理 NULL 值,可以使用 IS NULL 或 IS NOT NULL 运算符来判断条件字段是否为 NULL。
下面是一个简单示例,展示了如何在 CASE 表达式中处理 NULL 值:
SELECT column1,
CASE
WHEN column2 IS NULL THEN 'NULL value'
ELSE 'Not NULL value'
END AS result
FROM table;
在这个示例中,当 column2 的值为 NULL 时,返回 ‘NULL value’,否则返回 ‘Not NULL value’。
使用示例
为了更好地理解如何使用 CASE 表达式处理 NULL 值,我们来看几个示例。
示例1:返回固定值
假设我们有一个学生成绩表,其中包含学生的姓名和成绩。我们希望将成绩字段中的 NULL 值替换为固定值 “未知”,可以使用 CASE 表达式实现:
SELECT name,
CASE
WHEN score IS NULL THEN '未知'
ELSE score
END AS score
FROM student;
在这个示例中,当成绩字段的值为 NULL 时,返回 ‘未知’,否则返回实际的成绩值。
示例2:返回计算结果
假设我们有一个订单表,其中包含订单编号、订单日期和订单金额。我们希望计算订单金额的折扣价格,当折扣字段为 NULL 时,默认折扣为 0。可以使用 CASE 表达式实现:
SELECT order_number,
order_date,
CASE
WHEN discount IS NULL THEN order_amount
ELSE order_amount * (1 - discount)
END AS discount_amount
FROM order;
在这个示例中,当折扣字段的值为 NULL 时,返回订单金额;否则,返回根据折扣计算后的折扣金额。
总结
在本文中,我们介绍了 SQL 中使用 CASE 表达式处理 NULL 值的方法。我们学习了如何判断字段是否为 NULL,并使用 CASE 表达式返回相应的结果。通过示例,我们展示了如何在实际场景中使用 CASE 表达式处理包含 NULL 值的数据。使用 CASE 表达式可以更灵活地处理包含 NULL 值的数据,使查询结果更加符合需求。